//构造函数的初始化列表 解决在B类中组合了一个A类对象(A类设计了构造函数)
/* 根据构造函数的调用规则 设计了构造函数就一定要用,所以在B类中没有初始化A类对象的机会
* 解决方法就是用构造函数的参数列表
*/
/*如果类中含有const属性,初始化也必须使用初始化参数列表进行初始化*/
#include <iostream>
using namespace std;
class A
{
private:
int a;
public:
A(int _a){
a = _a;
cout<<"A的构造函数 "<<a<<endl;
}
~A(){
cout<<"A的析构函数 "<<a<<endl;
}
};
class B
{
public:
//构造函数初始化列表
B(int _b1, int _b2, int m, int n):a1(m), a2(n), c(10)
{
this->b1 = _b1;
b2 = _b2;
cout<<"B的构造函数 "<<endl;
}
~B(){
cout<<"B的析构函数 "<<endl;
}
private:
A a2;
A a1;
int b1;
int b2;
const int c;
};
//执行顺序:先执行被组合的对象的构造函数
//如果被组合的独享有多个,则按照其定义顺序,而不是初始化按照列表的顺序
//析构函数的执行顺序则与之相反
void ABplay()
{
B b1(1, 2, 3, 4);
}
int main_11()
{
ABplay();
system("pause");
return 0;
}
C++学习——构造函数初始化列表
最新推荐文章于 2022-10-23 13:21:22 发布