Considere el siguiente segmento de código:Comportamiento de objeto de C++ Referencia
class Window // Base class for C++ virtual function example
{
public:
virtual void Create() // virtual function for C++ virtual function example
{
cout <<"Base class Window"<<endl;
}
};
class CommandButton : public Window
{
public:
void Create()
{
cout<<"Derived class Command Button - Overridden C++ virtual function"<<endl;
}
};
int main()
{
Window *button = new CommandButton;
Window& aRef = *button;
aRef.Create(); // Output: Derived class Command Button - Overridden C++ virtual function
Window bRef=*button;
bRef.Create(); // Output: Base class Window
return 0;
}
Tanto Aref y BREF se asignan * Botón, pero ¿por qué son los dos resultados distintos. ¿Cuál es la diferencia entre asignar a Tipo de referencia y Tipo de no referencia?
Entonces, con este enlace de copiado tardío del constructor simplemente no sucede, ¿no? –
Artillero: Encuadernación tardía no es relevante aquí. Está creando un nuevo objeto estáticamente estátizado, no un objeto de tipo dinámico (para eso necesita una referencia o un puntero). –
destructor virtual o protegido. En muchos diseños, las funciones de miembro se llaman polimórficamente sin eliminar polimórficamente. –