【问题标题】:C++ Operator overloading - uni quiz answer looks wrong?C++ 运算符重载 - uni quiz 答案看起来不对?
【发布时间】:2013-11-01 23:24:12
【问题描述】:

大家好

今年我们的uni课程笔记有一些错误,我只是在考试前复习测验,附图显示了“不能作为非成员运算符重载实现”的正确答案。

在此处发帖可能无法及时得到 uni 论坛的答复。是我误解了什么,还是下面的答案有误?

谢谢:)

【问题讨论】:

  • 正确的答案确实是正确的。
  • 这很可疑,您似乎是在试图让这里的人同意您的观点,以便向您的老师展示。不过运气不好 - 乍一看,测验的答案似乎是正确的。
  • 为什么“看起来不对”?为你的立场提供理由。 (这允许根据断言的事实进行验证和/或反驳。)
  • 请教,这个重载怎么调用?
  • 我想我的问题是真的,如果 d 不能作为非成员函数工作,那么 c 肯定也不会?我应该问,c) 可以作为非成员函数工作吗?

标签: c++ overloading operator-keyword non-member-functions


【解决方案1】:

非成员函数 operator 必须包含两个参数。除了最后一个,所有选项都有两个参数,所以 d 是答案。如果它是作为成员函数或具有名称的常规函数​​,它就会被编译。

【讨论】:

    【解决方案2】:

    operator > 这样的二元运算符总是需要两个参数才能工作。但是,成员函数会得到this,它充当第一个参数。非会员当然不要this,这就是签名必须接受两个参数的原因。

    所以“d”对于您上面的“多重猜测”问题是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多