【问题标题】:In c++ why we can overload `operator ->` and can't overload `operator .` [duplicate]在 C++ 中,为什么我们可以重载 `operator ->` 而不能重载 `operator .` [重复]
【发布时间】:2018-04-06 07:37:38
【问题描述】:

在c++中,为什么我们可以重载operator ->而不能重载operator .
同样,为什么我们可以重载operator ->*而不能重载operator .*
如果你能帮助我,我将不胜感激!

【问题讨论】:

  • 因为 C++ 标准是这样指定的。
  • 因为如果可以的话,那就太疯狂了。看看operator& 的所有肮脏原因。
  • @BasileStarynkevitch 叹息。标准为何如此规定?
  • 因为没有人对此类功能提出一致的建议。试试看为什么很难。

标签: c++


【解决方案1】:

事实上,Stroustrup 在他的website 上有一个常见问题解答问题。引用他的回答:

运算符。 (dot) 原则上可以使用与 -> 相同的技术进行重载。但是,这样做可能会导致有关操作是否适用于对象重载的问题。或由 .

引用的对象

这个问题可以通过多种方式解决。在标准化时,尚不清楚哪种方式最好

(请注意,Stroustup 本人已经提议允许重载 operator.,其他人也是如此,因此我们可能会在该语言的未来版本中看到它。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2014-06-13
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多