一、在类中的成员对象为一个对象的构造顺序和析构顺序
#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);
}
重点:常量和引用一定要在类的列表中进行初始化,否则会报错。