home *** CD-ROM | disk | FTP | other *** search
- //: C11:HowMany.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Class counts its objects
- #include <fstream>
- using namespace std;
- ofstream out("HowMany.out");
-
- class HowMany {
- static int object_count;
- public:
- HowMany() {
- object_count++;
- }
- static void print(const char* msg = 0) {
- if(msg) out << msg << ": ";
- out << "object_count = "
- << object_count << endl;
- }
- ~HowMany() {
- object_count--;
- print("~HowMany()");
- }
- };
-
- int HowMany::object_count = 0;
-
- // Pass and return BY VALUE:
- HowMany f(HowMany x) {
- x.print("x argument inside f()");
- return x;
- }
-
- int main() {
- HowMany h;
- HowMany::print("after construction of h");
- HowMany h2 = f(h);
- HowMany::print("after call to f()");
- } ///:~
-