C++:重载 operator+= 和 operator-= 时是否需要自赋值检查?

use*_*501 1 c++ operator-overloading

重载operator+=and时是否需要自赋值检查,如下例所示operator-=?

例子:

class A
{
     A operator+=(const A& a)
     {
         if(this != &a)
         {
             // operations
         }

         return *this;
     }
}
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 5

在 C++ 中重载运算符 += 和 -= 时是否需要自赋值检查,如下例所示?

不它不是。事实上,这样做似乎是错误的。

使用以下内容是完全合法且语义上有效的:

int i = 10;
i += i;
Run Code Online (Sandbox Code Playgroud)

这里的期望是i将20在该操作结束时设置为。