如何在C ++中重载opAssign运算符“global”

时间:2009-10-04 15:43:52

标签: c++ operator-overloading

对如何超载它们感到好奇。

opAssign运算符类似于addAssign(+ =)和subAssign( - =)。

“global”意味着它们不会作为成员函数重载,而只是操作符作用于操作数

对于这些opAssign运算符,它们是二元运算符。(它们接收两个操作数) 因此需要两个参数。

我在网上找不到任何例子......

2 个答案:

答案 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赋值”。

  

赋值运算符应由具有一个参数

的非静态成员函数实现

函数调用运算符和下标运算符也是如此。其他“赋值”运算符(+ =, - =,* =等)可以是自由二进制函数。