复制构造函数-问题

问题描述

我被搜索了一段时间以寻找类似问题,但实际上我发现了一个但不完全相同的问题。 我的问题是:在下面的代码中:

#include<iostream>
using namespace std;

class Base {
private:
    int baseNum;
public:
    Base(int num = 10) :baseNum(num) { cout << "BASE CTOR" << endl; }
    Base(const Base& other) { 
        this->baseNum = other.baseNum;
        cout << "BASE COPY CTOR" << endl;
    }
    Base operator+(const Base& other) { return Base(this->baseNum + other.baseNum); }
};
int main()
{
    Base b1(39);
    Base b2;
    Base b3 = b1 + b2;
    return 0;
}

为什么输出是:
基础CTOR
基本CTOR
基本CTOR


我有两个问题:

(1)为什么即使一次也不会调用复制副本?
(2)当我的重载运算符+返回临时对象(按值返回)时,为什么它不通过复制c'tor在这次调用中,但是却通过默认c'tor?
(我对(2)的主张是:当您按值返回对象时,该对象必须经过副本c'tor ...)

我想解决这个问题

谢谢。

解决方法

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

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

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