为什么复制构造函数在下面的程序中被调用了两次。这是正确的行为吗?如果我不使用初始化列表,它会调用 A 的默认构造函数。
class A
{
public:
A(){cout<<"A()\n";}
A(const A &a){cout<<"A(A)\n";}
};
class B
{
private:
A aa;
public:
B(A bb):aa(bb)
{
cout<<"B(A)\n";
}
};
int main(int argc,char** argv)
{
A cc;
B b(cc);
}
输出:
A()
A(A)
A(A)
B(A)
最佳答案
第一次调用时cc
传递给构造函数 B::B(A)
的 B
.
第二次调用时b.aa
用 bb
初始化在构造函数的成员初始值设定项列表中 B::B(A)
.
关于c++ - 为什么复制构造函数在下面的程序中被调用了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35112621/