rekurencyjne zastosowanie operatora->

Mówi się, że operator strzałki jest stosowany rekurencyjnie. Ale kiedy próbuję wykonać poniższy kod, drukuje bełkot, kiedy ma wydrukować 4.

<code>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;
}
</code>

questionAnswers(3)

yourAnswerToTheQuestion