废话不多,直接上代码
#include<bits/stdc++.h>
using namespace std;
class Demo
{
private:
int id;
public:
Demo(int);
~Demo(void);
};
Demo::Demo(int x)
{
id=x;
cout << "id=" << id << ends << "Constructed" << endl;
}
Demo::~Demo(void)
{
cout<<"id="<<id<<ends<<"Destructed"<<endl;
}
Demo d1(1);//全局对象,main函数执行前就会有输出
void func(void)
{
static Demo d2(2);//静态局部对象,函数执行完毕后不会消亡
Demo d3(3);//局部对象,函数执行完毕后自动消亡
cout<<"End Func"<<endl;
}
int main(void)
{
Demo d4(4);//初始化
d4=6;//调用类型转换构造函数,创建一个临时对象6并进行类型转换赋给对象d4,赋完后自动消亡
cout<<"Main"<<endl;
{
Demo d5(5);//main中的局部对象,出了大括号自动消亡
}
func();//调用函数
cout<<"End Main"<<endl;
return 0;//程序结束,未消亡的对象按代码自下而上的顺序依次消亡
}
/*
id=1 Constructed
id=4 Constructed
id=6 Constructed
id=6 Destructed
Main
id=5 Constructed
id=5 Destructed
id=2 Constructed
id=3 Constructed
End Func
id=3 Destructed
End Main
id=6 Destructed
id=2 Destructed
id=1 Destructed
*/