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