这个程序演示了 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;
}
C++ 全局对象生命周期示例:wc 对象的影响

原文地址: https://www.cveoy.top/t/topic/qrVC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录