c++ - 如果 + 重载,则重载 += 运算符?

标签 c++ operator-overloading

<分区>

Possible Duplicate:
Overloading += in c++

如果重载 +,是否需要重载 += 运算符,或者编译器知道该怎么做?

谢谢。

最佳答案

你需要重载两者。

但是,如果您颠倒顺序,您可以重用您的代码:

struct foo
{
    // this is the "core" operation, because it's mutating (changes this)
    foo& operator+=(const foo&)
    {
        // ...
        return *this;
    }

};

foo operator+(const foo& lhs, const foo& rhs)
{
    foo ret = lhs;
    ret += rhs;        
    return ret;
}

您创建一个拷贝,对该拷贝进行操作,然后将其返回。

关于c++ - 如果 + 重载,则重载 += 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525965/

相关文章:

c++ - 正确使用 Poco C++ JSON 解析数据

c++ - 如何计算图像中的角数?

c++ - 如何覆盖 operator++ 以返回指针

c++ - 如何重载抽象类的运算符?

c++ - Qt,读入本地文本文件

c++ - OO 设计 - 传播属性

c++ - 重新指定继承的虚拟方法如何使其能够正确消除歧义?

c++ - 与函数一起使用时运算符 > 不匹配

c++ - 如何在 C++ 中为 boost 指针创建重载运算符?

c++ - 对如何重载 == 运算符感到困惑