歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++類的構造和析構順序

  1. #include <iostream>   
  2. #include <string>   
  3. using namespace std;  
  4.   
  5. class A  
  6. {  
  7. public:  
  8.     A(int k)  
  9.     {  
  10.         s = k;  
  11.         cout << k << "A is constructing\n";  
  12.     }  
  13.     ;  
  14.     ~A()  
  15.     {  
  16.         cout << s << "~A\n";  
  17.     }  
  18.     int s;  
  19. };  
  20.   
  21. void f()  
  22. {  
  23.     cout << "f is running\n";  
  24.     A s(2);// 優先級4   
  25.     static A t(3);// 相當於全局對象,優先級2   
  26. }  
  27.   
  28. int main(int argc, char **argv)  
  29. {  
  30.     cout << "main is running\n";  
  31.     A s(1);// 優先級3   
  32.     f();  
  33.     cout << "back in main" << endl;  
  34.     return 0;  
  35. }  
  36.   
  37. A t(4);// 全局對象,優先級1  
[cpp]
  1. 4A is constructing  
  2. main is running  
  3. 1A is constructing  
  4. f is running  
  5. 2A is constructing  
  6. 3A is constructing  
  7. 2~A  
  8. back in main  
  9. 1~A  
  10. 3~A  
  11. 4~A  

局部和靜態局部對象(文件作用域)以文本定義順序為順序,(類成員屬於此種情況)

靜態對象在首次定義時構造一次;程序結束析構

全局對象在main之前構造;程序結束時析構

全局對象如果分布在不同文件中,則構造順序隨機

Copyright © Linux教程網 All Rights Reserved