Salve,
l'output del codice sottostante é 5 5 2 6 3 . per quanto riguarda il penultimo output, cioe 6, quindi il secondo metodo della classe c non capisco il perche. non dovrebbe aver scelto il primo metodo della classe cin quanto viene passato un parametro di tipo statico c e di tipo dinamico b
codice:class A; class C { public: virtual int method(C *c) { return 2; } virtual int method(A *a) { return 6; } }; class A { public: virtual int method(A *a) { return 1; } }; class B : public A, public C { public: virtual int method(A *a) { return 3; } virtual int method(B *a) { return 4; } virtual int method(C *c) { return 5; } }; int main(int argc, char *argv[]) { C *a1 = new B(); C *a2 = new C(); A *a3 = new B(); cout << "a1.method(a1) vale " << a1->method(a1) << endl; cout << "a1.method(a2) vale " << a1->method(a2) << endl; cout << "a2.method(a2) vale " << a2->method(a2) << endl; cout << "a2.method(a1) vale " << a2->method(a3) << endl; cout << "a3.method(a3) vale " << a3->method(a3) << endl; }