C++为什么复制构造函数参数必须为const?

#include<iostream>usingnamespacestd;classNum{private:inta;public:Num(intx=0):a(x){}Nu... #include<iostream>using namespace std;class Num {private: int a;public: Num(int x = 0) :a(x) {} Num(const Num& a) { this->a = a.a; } friend Num operator+(Num x, Num y); friend ostream& operator<<(ostream &out, const Num& a);};Num operator+(Num x, Num y) { Num ans; ans.a = x.a + y.a; return ans;}ostream& operator<<(ostream &out, const Num& a) { out << "ans = " << a.a << endl; return out;}int main() { cout << Num(2) + 1 << endl; return 0;}复制构造函数参数不是const的话,main函数的加法运算无法执行 展开
 我来答
司马刀剑
高粉答主

2019-10-24 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7406万
展开全部
语句Complex c3 = c1 + c2;中的c1 + c2的结果是一个临时变量(右值),在C++03中,只有const引用才能够引用右值。

所以加上const限定符有以下好处:既可以从const和非const左值复制构造,也可以从const和非const右值复制构造。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式