C++ 全局对象生命周期示例:wc 对象的影响
这个程序演示了 C++ 全局对象的创建与销毁过程。全局对象 "wc" 在程序启动时自动创建,其构造函数 "Dog()" 会被调用,输出 "Dog"。在程序结束时,"wc" 被销毁,其析构函数 "~Dog()" 会被调用,输出 "~Dog"。此外,程序中还使用 "new" 创建了一个 "Dog" 对象,并手动调用其析构函数,展示了手动内存管理的方式。
区别:
-
**有 wc 时:**程序开始时会输出 "Dog",然后执行 main 函数中的代码,最后输出 "~Dog" 和 "~Dog",分别对应全局对象 wc 的析构和局部对象的析构。
-
**没有 wc 时:**程序只会输出 "in main",没有其他输出,因为没有全局对象参与执行。
**结论:**全局对象在程序启动时被创建,在程序结束时被销毁,其构造和析构函数会自动调用。
代码示例:
#include <iostream>
#include <exception>
using namespace std;
class Dog
{
public:
Dog() {
cout << "Dog" << endl;
}
~Dog() {
cout << "~Dog" << endl;
}
}wc;
int main()
{
cout << "in main" << endl;
int *ptr = new int [1000];
Dog *pdg = new (ptr) Dog;
cout << pdg << " " << ptr << endl;
pdg->~Dog();
pdg = nullptr;
delete [] ptr;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/qrVC 著作权归作者所有。请勿转载和采集!