为什么我的C ++程序的副本构造函数被调用两次?

问题描述

我不知道为什么我的输出以“ 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 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();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)