【问题标题】:C++ overloading `-` operator (as `* -1`)C++ 重载 `-` 运算符(如 `* -1`)
【发布时间】:2013-04-02 17:42:44
【问题描述】:

假设我有一个int,像这样:

int foo = 5;

然后我可以这样做:

int bar = -foo;     // -5

我希望能够对我的班级做同样的事情,那么如何重载- 运算符,用作* -1?我是否必须重载 * 运算符才能这样做?

【问题讨论】:

  • 我不明白-* 之间有什么关系。
  • 将其视为0 - foo,而不是foo * -1
  • @JamesMcLaughlin 啊,这让我明白提问者的意思了。
  • 像这里的问题吗? stackoverflow.com/questions/2155275/…

标签: c++ operators


【解决方案1】:
class MyClass
{
    friend MyClass operator-(const MyClass& x);
};

class MyClass
{
    MyClass operator-() const;
};

任你选择(尽管我会选择第一个)。

【讨论】:

  • 哇,这很简单!一旦我可以验证它有效,我会接受它。
  • 我会选择第二个,除非- 操作员不需要访问MyClassprotectedprivate 部分,在这种情况下我不会选择两者只需写MyClass operator-(const MyClass& x);。如果可能的话,我宁愿避免使用friend
  • @MikeDeSimone 如果可能的话,全局非好友函数当然是最好的。我把朋友放在那里只是为了强调这个选项不涉及成员函数。
  • 为什么全局非友元函数或友元函数比成员函数好?成员函数意味着声明位于每个人都在寻找类的功能的地方。从逻辑上讲,它也是类的功能。有什么好处?
  • @Dave 对称二元运算符(如 +、*、
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2016-04-08
  • 2012-06-02
  • 2014-01-14
  • 2013-03-23
  • 2013-12-03
相关资源
最近更新 更多