对如何超载它们感到好奇。
opAssign运算符类似于addAssign(+ =)和subAssign( - =)。
“global”意味着它们不会作为成员函数重载,而只是操作符作用于操作数
对于这些opAssign运算符,它们是二元运算符。(它们接收两个操作数) 因此需要两个参数。
我在网上找不到任何例子......
答案 0 :(得分:9)
以下是定义operator+=
:
struct Foo{
int x;
};
Foo& operator+=(Foo& lhs, const Foo& rhs) {
lhs.x += rhs.x;
return lhs;
}
答案 1 :(得分:2)
赋值运算符(=)的特殊之处在于总是需要是非静态成员函数,符合C ++标准的“§13.5.3赋值”。
赋值运算符应由具有一个参数
的非静态成员函数实现
函数调用运算符和下标运算符也是如此。其他“赋值”运算符(+ =, - =,* =等)可以是自由二进制函数。