aa
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # include <iostream> 2 using namespace std; 3 4 class ClxBase 5 { 6 public: 7 ClxBase() 8 { 9 cout << "Constructor of class ClxBase" << endl; 10 } 11 ~ClxBase() 12 { 13 cout << "Destructor of class ClxBase" << endl; 14 } 15 void DoAction() 16 { 17 cout << "Do Action in class ClxBase" << endl; 18 } 19 }; 20 21 class ClxDerived : public ClxBase 22 { 23 public: 24 ClxDerived() 25 { 26 cout << "Constructor of class ClxDerived" << endl; 27 } 28 ~ClxDerived() 29 { 30 cout << "Destructor of class ClxDerived" << endl; 31 } 32 void DoAction() 33 { 34 cout << "Do Action in class ClxDerived" << endl; 35 } 36 }; 37 38 int main() 39 { 40 ClxDerived *p = new ClxDerived; 41 p->DoAction(); 42 delete p; 43 return 0; 44 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 blank@linux-bai:~> g++ main.cpp -o a && ./a 2 Constructor of class ClxBase 3 Constructor of class ClxDerived 4 Do Action in class ClxDerived 5 Destructor of class ClxDerived 6 Destructor of class ClxBase
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # include <iostream> 2 using namespace std; 3 4 class ClxBase 5 { 6 public: 7 ClxBase() 8 { 9 cout << "Constructor of class ClxBase" << endl; 10 } 11 ~ClxBase() 12 { 13 cout << "Destructor of class ClxBase" << endl; 14 } 15 void DoAction() 16 { 17 cout << "Do Action in class ClxBase" << endl; 18 } 19 }; 20 21 class ClxDerived : public ClxBase 22 { 23 public: 24 ClxDerived() 25 { 26 cout << "Constructor of class ClxDerived" << endl; 27 } 28 ~ClxDerived() 29 { 30 cout << "Destructor of class ClxDerived" << endl; 31 } 32 void DoAction() 33 { 34 cout << "Do Action in class ClxDerived" << endl; 35 } 36 }; 37 38 int main() 39 { 40 ClxBase*p = new ClxDerived; 41 p->DoAction(); 42 delete p; 43 return 0; 44 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 blank@linux-bai:~> g++ main.cpp -o a && ./a 2 Constructor of class ClxBase 3 Constructor of class ClxDerived 4 Do Action in class ClxBase 5 Destructor of class ClxBase
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # include <iostream> 2 using namespace std; 3 4 class ClxBase 5 { 6 public: 7 ClxBase() 8 { 9 cout << "Constructor of class ClxBase" << endl; 10 } 11 virtual ~ClxBase() 12 { 13 cout << "Destructor of class ClxBase" << endl; 14 } 15 virtual void DoAction() 16 { 17 cout << "Do Action in class ClxBase" << endl; 18 } 19 }; 20 21 class ClxDerived : public ClxBase 22 { 23 public: 24 ClxDerived() 25 { 26 cout << "Constructor of class ClxDerived" << endl; 27 } 28 ~ClxDerived() 29 { 30 cout << "Destructor of class ClxDerived" << endl; 31 } 32 void DoAction() 33 { 34 cout << "Do Action in class ClxDerived" << endl; 35 } 36 }; 37 38 int main() 39 { 40 ClxBase*p = new ClxDerived; 41 p->DoAction(); 42 delete p; 43 return 0; 44 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 Constructor of class ClxBase 2 Constructor of class ClxDerived 3 Do Action in class ClxDerived 4 Destructor of class ClxDerived 5 Destructor of class ClxBase