home *** CD-ROM | disk | FTP | other *** search
- //: C10:StaticDestructors.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Static object destructors
- #include <fstream>
- using namespace std;
- ofstream out("statdest.out"); // Trace file
-
- class Obj {
- char c; // Identifier
- public:
- Obj(char cc) : c(cc) {
- out << "Obj::Obj() for " << c << endl;
- }
- ~Obj() {
- out << "Obj::~Obj() for " << c << endl;
- }
- };
-
- Obj a('a'); // Global (static storage)
- // Constructor & destructor always called
-
- void f() {
- static Obj b('b');
- }
-
- void g() {
- static Obj c('c');
- }
-
- int main() {
- out << "inside main()" << endl;
- f(); // Calls static constructor for b
- // g() not called
- out << "leaving main()" << endl;
- } ///:~
-