Рассмотрим следующий фрагмент кода:поведение C++ Object Reference
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;
}
Оба Ареф и СДНИМ получить назначения * Кнопка, но почему два вывода различны. В чем разница между присвоением типа Reference и non Reference типа?
Итак, с этим конструктором копии позднего связывания просто не происходит, не так ли? –
Наводчик: последнее связывание здесь не имеет отношения. Вы создаете новый статически типизированный объект, а не динамически типизированный объект (для этого вам нужна ссылка или указатель). –
виртуальный или защищенный деструктор. Во многих конструкциях функции-члены называются полиморфными без удаления полиморфно. –