【问题标题】:What is the role of "&" and "*" on operator overloading?“&”和“*”在运算符重载中的作用是什么?
【发布时间】:2016-02-25 20:07:30
【问题描述】:
Pareja& operator+ (const Pareja &parametro1, const Pareja &parametro2) {
    return *(new Pareja(parametro1.a + parametro2.a, parametro1.b + parametro2.b));
}

我不明白为什么我们在Pareja& 中使用“&”和在return *(... 中使用“*”

当我们必须使用它时,何时不用。

当我阅读有关重载运算符的信息时,这个“主题”是已知的。

【问题讨论】:

  • 您会在任何 C++ 课程中找到答案。再加上这段代码 sn-p 很糟糕,并且故意泄漏内存。
  • @YSC 非常感谢您的建设性意见。
  • @YSC:这不一定会泄漏内存——尽管它确实需要相当小心以避免其泄漏内存。
  • @JerryCoffin 过分的关心,要求删除返回值的别名。甚至a + b + c 泄漏。
  • @YSC:是的——别误会我的意思。我并不是说这是一个好的设计。我只是说它(几乎)可以以不泄漏内存的方式使用它。

标签: c++ operators overloading


【解决方案1】:

您想对对象进行操作,而不是对它们的副本进行操作,所以这就是为什么这里有与号“&”。 const 关键字表示您不会修改它们的值。星号“*”正在取消引用指向新创建对象的指针,在这种情况下会导致 YSC 之前所说的内存泄漏。 不允许创建新对象然后将其存储在任何容器/指针中。 你要为他们的一生负责。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 2020-09-20
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多