阅读、运行下列程序,并回答相关问题,进一步熟悉构造函数、析构函数的定义、调用,清楚对象构造、析构的顺序: #include <iostream> using namespace std; class Test { private: int x; public: Test() { cout<<"对象地址: "<<this<<", 构造函数被调用"<<endl; x=0; } ~Test() { cout<<"对象地址: "<<this<<", 析构函数被调用"<<endl; }
时间: 2023-10-30 11:16:57 浏览: 91
这是一个定义了构造函数和析构函数的类 Test,构造函数中输出了对象地址并初始化了 x,析构函数中同样输出了对象地址。
接下来需要进行对象的创建和销毁来查看构造函数和析构函数的调用顺序。可以编写如下代码进行测试:
int main()
{
cout<<"创建对象1"<<endl;
Test obj1;
cout<<"创建对象2"<<endl;
Test obj2;
return 0;
}
运行结果如下:
创建对象1
对象地址: 0x7ffeefbff5e0, 构造函数被调用
创建对象2
对象地址: 0x7ffeefbff5e4, 构造函数被调用
对象地址: 0x7ffeefbff5e4, 析构函数被调用
对象地址: 0x7ffeefbff5e0, 析构函数被调用
可以看到,先创建的对象先被析构,即析构函数的调用顺序与构造函数的调用顺序相反。同时,对象的创建和销毁都会调用对应的构造函数和析构函数。
阅读全文