【发布时间】:2011-01-03 03:55:03
【问题描述】:
给定以下代码sn-p,
class Num
{
public:
Num(int iNumber = 0) : m_iNumber(iNumber) {}
Num operator+=(const Num& rhs)
{
this->m_iNumber = (this->m_iNumber + rhs.m_iNumber);
return *this;
}
private:
int m_iNumber;
};
//===========================================================
int _tmain(int argc, _TCHAR* argv[])
{
Num a(10);
Num b(100);
b += a;
return 0;
}
我想知道如何正确重载operator+=。
问题:
如何定义这个算子的签名?具体来说,返回值应该用什么?
函数体如何实现?
如何使用这个重载运算符?
我已经提供了上述解决方案,但我担心它不正确。
【问题讨论】:
-
@James,我通过谷歌搜索并没有找到一个好的资源来告诉我如何实现 operator+=。另外,我看到有些人使用“引用”作为这个函数的返回值,但我不知道为什么以及它的用途是什么。 ——谢谢
-
一本不错的 C++ 书籍会告诉你如何去做。有时“通过谷歌搜索”是不够的;这当然不可靠。 :)
-
@q0987 - 作为旁注,我认为值得一提的是,如果您已经为您的班级实现了
operator+=,那么将operator+实现为通常是一个好习惯好吧,就operator+=而言。请参阅 Scott Meyers 所著的《更有效的 C++(第 1 版)》中的第 22 项。
标签: c++