【发布时间】:2017-11-02 11:23:51
【问题描述】:
我为某些类 c1 重载了赋值运算符,我还重载了加法运算符,用于类 c1 和 c2 的加法。当我按如下方式使用它们时:
// signatures of the overloaded operators:
c2 c1::operator+(c2 & obj_c2);
c1& c1::operator=(c2& obj_c2);
// use them like this:
c1 obj1;
c2 ojb2;
obj1=obj1+ojb2;
这编译失败。但如果我使用临时对象,它就可以工作:
c1 obj1;
c2 ojb2, temp;
temp=obj1+ojb2;
obj1=temp;
我用的编译器是g++,没有临时对象怎么会出问题?
【问题讨论】:
-
要么让加法运算符返回一个引用,要么添加另一个带值的赋值运算符。
-
我建议您查看the canonical operator overload implementations。请注意赋值运算符的参数是如何引用
const?
标签: c++ class oop operators overloading