【发布时间】:2010-05-30 12:11:10
【问题描述】:
如果p->m 只是(*p).m 的语法糖,那不是很有意义吗?从本质上讲,我写过的每个operator-> 都可以按如下方式实现:
Foo::Foo* operator->()
{
return &**this;
}
在任何情况下,我希望 p->m 表示 (*p).m 以外的其他含义吗?
【问题讨论】:
-
对于存在这种递归的类,
x->y被解释为(x.operator->())->y似乎很自然。也许他们认为允许递归没有害处,因此没有禁止它?至少我在 ARM 中找不到一些解释。
标签: c++ pointers operator-overloading smart-pointers