我有以下代码,我不明白,为什么在创建对象b时,A类的构造函数没有调用.......我会很感激一点帮助。非常感谢你
#include <iostream>
using namespace std;
class MyClass
{
int x;
public:
MyClass(int y);
MyClass(MyClass &my)
{
x = my.x;
cout << "My class created by copy" << endl;
}
};
MyClass::MyClass(int y)
{
x = y;
cout << "My class created" << endl;
}
class A {
MyClass k;
public:
A(MyClass &my) : k(my) {
cout << "A created" << endl;
}
};
class B {
A data;
public:
B(A& aa) : data(aa)
{
cout << "B created" << endl;
}
};
int main()
{
MyClass obj(100);
A a(obj);
B b(a);
return 0;
}
执行:
My class created
My class created by copy
A created
My Class created by copy
B created
答案 0 :(得分:6)
A
的复制构造函数,而不是您定义的构造函数。由于既没有定义也没有删除它,因此调用默认构造函数。默认构造函数将调用每个成员变量的复制构造函数;我相信它是按照声明的顺序。