是在C++中独立定义的算术/赋值运算符和复合赋值运算符
Are arithmetic/assignment operators and compound assignment operators independently defined in C++
I.e如果在类定义中我重载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
该语言对此没有任何限制-您可以使用一个运算符+来对两个对象求和,使用一个+=来炸毁太阳,这仍然是合法的。另一方面,强烈建议不要出现违反直觉的运算符重载,否则您的类将导致使用起来极其尴尬。
顺便说一句,为了避免代码重复,通常+是根据+=:实现的
A operator+(const A& right) const
{
A ret(*this);
ret+=right;
return ret;
}
不,如果你有什么行为,你还需要重写+=
运算符!
相关文章:
- 重载Singly Linked List中的赋值运算符
- 使用赋值运算符重载从类中返回jobject
- 标准库类型的赋值运算符的引用限定符
- 复制构造函数、赋值运算符C++
- 标准::变体的赋值运算符
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- C 复合赋值运算符 ^= 平均值
- 复合赋值运算符C++概念
- 在未初始化的变量上使用复合赋值运算符(+=, ..)不是C++中的UB?
- 复合赋值运算符是否不如 C++ 精确?
- 重载C++中的复合赋值运算符
- C++中重载复合赋值运算符不会更改变量
- 枚举的复合赋值运算符真的应该根据其关联的算术运算符来定义吗?
- 复合赋值运算符重载
- 在复合赋值运算符中强制转换
- 重载复合赋值运算符
- 使用复合赋值运算符解决转换警告
- 复合赋值运算符的类型/类型转换?(例如*=(星形等于))
- 枚举上复合赋值运算符的运算符重载
- 是在C++中独立定义的算术/赋值运算符和复合赋值运算符