home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C14 / Order.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  981 b   |  50 lines

  1. //: C14:Order.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Constructor/destructor order
  7. #include <fstream>
  8. using namespace std;
  9. ofstream out("order.out");
  10.  
  11. #define CLASS(ID) class ID { \
  12. public: \
  13.   ID(int) { out << #ID " constructor\n"; } \
  14.   ~ID() { out << #ID " destructor\n"; } \
  15. };
  16.  
  17. CLASS(Base1);
  18. CLASS(Member1);
  19. CLASS(Member2);
  20. CLASS(Member3);
  21. CLASS(Member4);
  22.  
  23. class Derived1 : public Base1 {
  24.   Member1 m1;
  25.   Member2 m2;
  26. public:
  27.   Derived1(int) : m2(1), m1(2), Base1(3) {
  28.     out << "Derived1 constructor\n";
  29.   }
  30.   ~Derived1() {
  31.     out << "Derived1 destructor\n";
  32.   }
  33. };
  34.  
  35. class Derived2 : public Derived1 {
  36.   Member3 m3;
  37.   Member4 m4;
  38. public:
  39.   Derived2() : m3(1), Derived1(2), m4(3) {
  40.     out << "Derived2 constructor\n";
  41.   }
  42.   ~Derived2() {
  43.     out << "Derived2 destructor\n";
  44.   }
  45. };
  46.  
  47. int main() {
  48.   Derived2 d2;
  49. } ///:~
  50.