⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +

📁 实现特定功能的俐子,,很好的大家快来下巴,,大家来分享
💻
字号:
【例5.11】  分析下面程序中析构函数与构造函数的调用顺序。
 #include<iostream>
using namespace std;
class object {
    private: 
		int val;
    public: 
		object(): val(0)
		{cout<<"Default constructor for object“<<endl;}
		object(int i): val(i)
		{cout<<"Constructor for object“<<val<<endl;}
		~object()
		{cout<<"Destructor for object“<<val<<endl;}
};
class container{
    private: 
		object one;//初始化顺序与对象成员产生的顺序有关
		object two;//排在前面的先初始化
		int data;
    public: 
		container(): data(0)
		{cout<<"Default constructor for container“<<endl;}
		container(int i,int j,int k);
		~container()
		{cout<<"Destructor for container“<<data<<endl;}
};
container ∷ container(int i,int j,int k): two(i),one(j)//与初始化列表顺序无关
{ data=k;
  cout<<"Constructor for container“<<data<<endl;
}
void main()
{ container obj,anObj(5,6,10); }
程序运行结果如下: 
Default constructor for object//为对象成员one调用默认构造函数
Default constructor for object//为对象成员two调用默认构造函数
Default constructor for container//为对象obj调用container类的默认构造函数
Constructor for object 6//为对象成员one调用构造函数
Constructor for object 5 //为对象成员two调用构造函数
Constructor for container 10//为对象anObj调用container类的有参构造函数
Destructor for container 10//调用container类的析构函数析构对象anObj
Destructor for object 5//析构数据成员为5的对象two
Destructor for object 6//析构数据成员为6的对象one
Destructor for container 0//调用container类的析构函数析构对象obj
Destructor for object 0//析构对象two
Destructor for object 0//析构对象one在这个程序中,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -