c++ - 算术/赋值运算符和复合赋值运算符是否在C++中独立定义

标签 c++ operator-overloading

即如果在类定义中我重载了 operator+operator= 这对 operator+= 有什么影响吗?反之亦然。

或者除非另有定义,否则这些运算符是否完全独立?

最佳答案

不,这些运营商是完全独立的。

您当然可以使用其他实现一个,但默认情况下它们是独立的。

struct X
{
    X& operator = (const X&);
    X operator + (const X&) const;
    //X& operator += (const X& other) 
    //        { operator=(operator+(other)); return *this; }
};

X x, y;
x += y; //doesn't compile unless you uncomment that line

关于c++ - 算术/赋值运算符和复合赋值运算符是否在C++中独立定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458772/

相关文章:

c++ - cstatic 的消息

c++ - xmath.h 是做什么用的?

c++ - 重载后缀运算符如何工作?

c++ - 在 win7-64 位中通过 mingw 使用 boost.python 编译一些代码

c++ - 使用 rapidjson 从 json 文件中获取数组数据

c++ - 在 C++ 中,您需要在两个方向上重载 operator== 吗?

.net - 在 F# 中重载 "="和 "<>"

c++ - 为什么有些运算符只能作为成员函数重载,其他的作为友元函数重载,而其余的则两者都重载?

C++ 将二进制文件转换为图像

c++ - 当解引用运算符 (*) 被重载时,*this 的使用会受到影响吗?