Si consideri il seguente segmento di codice:Comportamento di oggetto C++ Riferimento
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;
}
Sia Aref e BREF vengono assegnati * pulsante, ma perché sono i due output diverso. Qual è la differenza tra l'assegnazione al tipo di riferimento e il tipo non di riferimento?
Quindi, con questa copia il costruttore in ritardo di associazione semplicemente non succede, giusto? –
Gunner: Late Binding non è rilevante qui. Stai creando un nuovo oggetto tipizzato staticamente non un oggetto tipizzato dinamicamente (per questo hai bisogno di un riferimento o di un puntatore). –
distruttore virtuale o protetto. In molti progetti le funzioni membro sono chiamate polimorficamente senza eliminare polimorficamente. –