问题描述
我被搜索了一段时间以寻找类似问题,但实际上我发现了一个但不完全相同的问题。 我的问题是:在下面的代码中:
#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 (将#修改为@)