【发布时间】:2020-09-06 18:31:11
【问题描述】:
我不明白为什么我的输出以“ACCB..”开头 - 我的期望是“ACB..”
为什么class A的拷贝构造函数被调用了两次?
#include <iostream>
using namespace std;
class A
{
int x, y, z;
public:
A(int x, int y, int z) :x(x), y(y), z(z) { cout << "A"; }
A(A& a) :x(a.x), y(a.y), z(a.z) { cout << "C"; }
void sh() { cout << x << y << z; }
};
class B
{
A a;
int q, r;
public:
B(A x, int y, int z) : a(x), q(y), r(z) { cout << "B"; }
void sh() { a.sh(); cout << q << r; }
};
int main()
{
A i(9, 7, 4);
B b(i, 3, 7);
b.sh();
}
【问题讨论】:
-
另一个让初学者惊讶的案例 C++ 默认是按值复制。
标签: c++ oop copy-constructor