He encontrado un comportamiento extraño al usar una variable de referencia.Variable de referencia y funciones virtuales
Aquí es implementaciones de clase:
class Base {
public:
virtual void Method() = 0;
};
class DerivedA : public Base {
public:
virtual void Method() {}
}
class DerivedB : public Base {
public:
virtual void Method() {}
}
He aquí un ejemplo de código que tienen el extraño comportamiento:
void main(int argc, char *argv[]) {
DerivedA a;
DerivedB b;
Base &base = a;
base.Method(); // Calls DerivedA::Method
base = b;
base.Method(); // Calls DerivedA::Method!!! Why doesn't call DerivedB.Method()?
}
En conclusión, parece que la tabla de punteros de función virtual "asociado" a la la variable de referencia se determina solo al inicializar la variable de referencia. Si reasigno la variable de referencia, el vfpt no cambia.
lo que sucede aquí?
¡Creo que esta respuesta merece el tic verde! – Walter
Sí, creo que esta debería ser la respuesta aceptada. – Rafid
Gracias, sin embargo la respuesta aceptada es la pregunta que ha aceptado y que está bien que aceptaba la otra respuesta ;-) –