为什么赋值运算符要返回对对象的引用?

新手上路,请多包涵

我正在对我的 C++ 进行一些修订,并且我正在处理运算符重载,特别是“=”(赋值)运算符。我在网上看,遇到了多个讨论它的话题。在我自己的笔记中,我把我所有的例子都记下来了

class Foo
{
    public:
        int x;
        int y;
        void operator=(const Foo&);
};
void Foo::operator=(const Foo &rhs)
{
    x = rhs.x;
    y = rhs.y;
}

在我在网上找到的所有引用中,我注意到运算符返回对源对象的引用。为什么返回对对象的引用而不是什么都没有的正确方法是什么?

原文由 maccard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 435
1 个回答

通常的形式返回对目标对象的引用以允许赋值链接。否则,将无法做到:

 Foo a, b, c;
// ...
a = b = c;

不过,请记住,正确分配操作符 比看起来更难

原文由 Matteo Italia 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题