1
我重载了某个类c1的赋值运算符,并且我还重载了添加运算符,用于添加类c1和c2。当我使用它们如下:过载赋值运算符,rhs是一个函数调用
// 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 ++,怎么可能有问题没有一个临时对象?
要么使加法运算符返回一个引用,要么添加另一个赋值的赋值运算符。 – Barmar
我建议你检查[规范运算符超载实现](http://en.cppreference.com/w/cpp/language/operators#Canonical_implementations)。注意赋值运算符的参数是如何引用*'const' *? –