类的构造函数与析构函数的调用顺序
先来段代码:
1 #include <iostream> 2 using namespace std; 3 4 class Clock{ 5 private: 6 int H,M,S; 7 public: 8 Clock(int h=0,int m=0,int s=0){ 9 H=h,M=m,S=s; 10 cout<<"constructor:"<<H<<":"<<M<<":"<<S<<endl; 11 } 12 ~Clock(){ 13 cout<<"destructor:"<<H<<":"<<M<<":"<<S<<endl; 14 } 15 }; 16 17 int main(){ 18 Clock C3(10,0,0); 19 Clock C4(11); 20 return 0; 21 } 22 Clock C1(8); 23 Clock C2(9);
其结果为:
我们可以发现几点:
1.先建立全局对象,再建立局部对象。与普通变量建立顺序相同。
2.析构函数调用的顺序是逆序,这是由于局部对象在栈中建立。
3.全局对象的析构没有显示,那是其在程序结束时调用,自然不显示。