类的组合中对象成员初始化及报错“类不存在默认构造函数”
B类中包含A类的对象a,a即对象成员。
初始化方法
#include
using namespace std;
class A
{
int x;
friend class B;
public:
A(int a)
{
x = a;
cout << "Ax =" << x << endl;
}
};
class B
{
int z;
A a1, a2;
public:
B(int c1, int c2, int c3) :a2(c1), a1(c2)
{
z = c3;
cout << "Bz =" << z << endl;
}
};
int main()
{
B b(1, 2, 3);
}
输出结果
Ax =2 Ax =1 Bz =3
可以看出对象成员构造函数的调用顺序与对象成员在类中定义的次序相同,即B中的A a1,a2使得先构造a1对象。
错误分析
#include
共有 0 条评论