Was ist der Operator -> * in C ++?

C ++ überrascht mich weiterhin. Heute habe ich von dem Operator -> * erfahren. Es ist überladbar, aber ich habe keine Ahnung, wie ich es aufrufen soll. Ich schaffe es, es in meiner Klasse zu überladen, aber ich habe keine Ahnung, wie ich es nennen soll.

struct B { int a; };

struct A
{
    typedef int (A::*a_func)(void);
    B *p;
    int a,b,c;
    A() { a=0; }
    A(int bb) { b=b; c=b; }
    int operator + (int a) { return 2; }
    int operator ->* (a_func a) { return 99; }
    int operator ->* (int a) { return 94; }
    int operator * (int a) { return 2; }
    B* operator -> () { return p; }


    int ff() { return 4; }
};


void main()
{
    A a;
    A*p = &a;
    a + 2;
}

bearbeiten:

Dank der Antwort. Um die überladene Funktion aufzurufen, schreibe ich

void main()
{
    A a;
    A*p = &a;
    a + 2;
    a->a;
    A::a_func f = &A::ff;
    (&a->*f)();
    (a->*f); //this
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage