歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++類的構造和析構順序

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

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