【发布时间】:2012-05-14 16:43:04
【问题描述】:
据说箭头运算符是递归应用的。但是当我尝试执行以下代码时,它应该打印 4 时会打印乱码。
class dummy
{
public:
int *p;
int operator->()
{
return 4;
}
};
class screen
{
public:
dummy *p;
screen(dummy *pp): p(pp){}
dummy* operator->()
{
return p;
}
};
int main()
{
dummy *d = new dummy;
screen s(d);
cout<<s->p;
delete d;
}
【问题讨论】:
-
哪里说是“递归应用”?
-
不,我不同意您的示例按预期工作, -> 操作符本质上只是一个函数调用,为什么要深入研究?如果这样做,您将如何控制在什么级别停止取消引用,这将使继承和多态性比现在更加复杂
-
C++ Primer,第四版,作者 Stanley B. Lippman,第 14.6 节最后一段。
标签: c++