废话不多,直接上代码

    1. #include<bits/stdc++.h>
    2. using namespace std;
    3. class Demo
    4. {
    5. private:
    6. int id;
    7. public:
    8. Demo(int);
    9. ~Demo(void);
    10. };
    11. Demo::Demo(int x)
    12. {
    13. id=x;
    14. cout << "id=" << id << ends << "Constructed" << endl;
    15. }
    16. Demo::~Demo(void)
    17. {
    18. cout<<"id="<<id<<ends<<"Destructed"<<endl;
    19. }
    20. Demo d1(1);//全局对象,main函数执行前就会有输出
    21. void func(void)
    22. {
    23. static Demo d2(2);//静态局部对象,函数执行完毕后不会消亡
    24. Demo d3(3);//局部对象,函数执行完毕后自动消亡
    25. cout<<"End Func"<<endl;
    26. }
    27. int main(void)
    28. {
    29. Demo d4(4);//初始化
    30. d4=6;//调用类型转换构造函数,创建一个临时对象6并进行类型转换赋给对象d4,赋完后自动消亡
    31. cout<<"Main"<<endl;
    32. {
    33. Demo d5(5);//main中的局部对象,出了大括号自动消亡
    34. }
    35. func();//调用函数
    36. cout<<"End Main"<<endl;
    37. return 0;//程序结束,未消亡的对象按代码自下而上的顺序依次消亡
    38. }
    39. /*
    40. id=1 Constructed
    41. id=4 Constructed
    42. id=6 Constructed
    43. id=6 Destructed
    44. Main
    45. id=5 Constructed
    46. id=5 Destructed
    47. id=2 Constructed
    48. id=3 Constructed
    49. End Func
    50. id=3 Destructed
    51. End Main
    52. id=6 Destructed
    53. id=2 Destructed
    54. id=1 Destructed
    55. */