类中的类成员对象的初始化和析构

来源:互联网 发布:linux操作系统好用吗 编辑:程序博客网 时间:2024/05/05 10:13

一、在类中的成员对象为一个对象的构造顺序和析构顺序

#include<iostream>
using namespace std;
class B
{
public:
B(int x){this->x=x;cout<<this->x<<"--"<<"B构建"<<endl;}
~B(){cout<<this->x<<"--"<<"B析构"<<endl;}
private:
int x;
};
class A
{
public:
A(int x,int y):b(x),c(y)
{
cout<<"A构建"<<endl;
};
~A(){cout<<"A析构"<<endl;}
private:
B b,c;
};
void main()
{
A a(4,5);
}

运行的结果是:

重点:构造函数的顺序是先构造类成员对象,类成员的对象的顺序是按照类的成员定义的顺序来初始化

先初始化b然后初始化c,最后初始化本身的对象a,析构的顺序则是完全相反的顺序。

二、类中的成员变量是引用或常量就一定要进行初始化

#include<iostream>
using namespace std;
class A
{
public:
A(int x,int y):x(x),y(y){}
private:
const int x;
int &y;
};
void main()
{
A a(2,3);
}

重点:常量和引用一定要在类的列表中进行初始化,否则会报错。


原创粉丝点击