fox@cs.columbia.edu (David Fox) (12/31/88)
The following program demonstrates the treatment g++ gives objects which are declared static inside the scope of a function. Each time the function is entered the default constructor is called for n. To me, this seems to defeat the purpose of a static variable, to retain its value from invocation to invocation. #include <stream.h> class Number { int i; public: Number() {i = 999;} friend ostream& operator<<(ostream& s, Number& n) {return s << n.i << "\n";} set(int n) {i = n;} }; func() { static Number n; cout << n; n.set(555); cout << n; } main() { func(); func(); } This program prints 999 555 999 555 I guess I would call this a bug. David Fox fox@cs.columbia.edu P.S. By the way, I have sent previous bug reports to bug-g++@prep.ai.mit.edu, but they never appeared here. Should I have? Will I see this? Will the people who see bug-g++ see this?
fox@cs.columbia.edu (David Fox) (12/31/88)
By the way, the program was compiled with g++-1.31.0 running on a Sun 3/60 under SunOS 3.4.