相关疑难解决方法(0)

运算符重载的基本规则和习惯用法是什么?

注意:答案是按照特定的顺序给出的,但由于许多用户根据投票而不是给出的时间对答案进行排序,因此这里是答案索引,它们是最有意义的顺序:

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ operator-overloading operators c++-faq

2074
推荐指数
8
解决办法
88万
查看次数

尽管运算符过载,但object = -object仍无法编译

可能重复:
如何在C++中重载一元减号运算符?

我有一个C类,它重载了许多运算符:

class C
{
  ...
  C& operator-=(const C& other) {...}
  const C operator-(const C& other) {...}
}
inline const C operator*(const double& lhs, const C& rhs)
Run Code Online (Sandbox Code Playgroud)

现在我想要反转一个C类型的对象

c = -c;
Run Code Online (Sandbox Code Playgroud)

并且gcc给了我以下错误:

no match for >>operator-<< in >>-d<<
candidate is: const C C::operator-(const C&)
Run Code Online (Sandbox Code Playgroud)

使用c = -1*c有效,但我希望能够缩短它.我班上缺少什么?


解决:添加了一元运算符 - :

C operator-() const {...}
Run Code Online (Sandbox Code Playgroud)

作为C的成员

c++ operator-overloading

1
推荐指数
1
解决办法
114
查看次数

标签 统计

c++ ×2

operator-overloading ×2

c++-faq ×1

operators ×1