Soy nuevo, así que no me moleste :) Por lo que mi profesor le había dicho hace algún tiempo, el orden de la tabla virtual es importante. ¡¡Pero no entiendo la razón de eso !!?¿Es importante el orden de la tabla virtual?
Dado el siguiente código:
class A
{
public:
A() {cout <<"1" << endl;};
A (const A& s) {cout << "2" << endl;}
~A() {cout << "3" << endl;}
void f1() {cout << "4" << endl; f2();}
virtual void f2() = 0;
virtual void f3() {cout << "5" << endl;}
};
class B : public A
{
public:
B() {cout << "6" << endl;}
B(const B& b) : A(b) {cout << "7" << endl;}
~B() {cout << "8" << endl;}
virtual void f1() {cout<<"9"<<endl;}
void f2() {cout<<"lO"<<endl; f4();}
virtual void f2(int i) {cout << "11" << endl;}
virtual void f4() {cout << "12" << endl; f3();}
};
Dijo que la orden es:
A's vtable :
A::f2()
A::f3()
B's vtable :
B::f2()
A::f3()
B::f1()
B::f2(int)
B::f4()
Pero no entiendo por qué es importante? Dijo que el vtable es inútil si es no por su orden correcto, ¿puede explicar por qué?
muchas gracias !!! A todos ustedes ! –
@Ron_s asegúrese de hacer clic en la marca de verificación en la parte superior izquierda de esta respuesta si contestó su pregunta. –