據說箭頭運算符是遞歸應用的。但是,當我嘗試執行下面的代碼,它打印亂碼時,它應該打印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;
}
它在哪裏說它是「遞歸應用」? –
不,我不同意你的例子的工作如預期的那樣, - > opertor本質上只是一個函數調用,爲什麼它應該鑽取?如果它這樣做,你將如何控制在什麼級別停止解引用,它會使繼承和多態性更加複雜,比它已經是 – EdChum
C++入門,第四版 通過Stanley B. Lippman, 第14.6 最後一段。 – user1232138