情况一:
在一个类中同时使用 operator+=(一个参数) 和 operator+(一个参数)的报错原因:
因为 += 运算符的返回类型是类对象的引用,可以直接进行修改,而 + 运算符的返回类型是一个新的类对象,不能直接进行修改。如果同时定义了 += 和 + 运算符,编译器无法确定应该使用哪个运算符,因此会报错。
解决这个问题的方法是,将 + 运算符重载函数的返回类型定义为一个新的临时对象,可以通过在函数声明和定义中添加 const 关键字来实现:
class MyClass
{
public:
MyClass& operator+=(const MyClass& other);
MyClass operator+(const MyClass& other) const; // 声明为const
};