Вызов метода класса через указатель на объект
class Base
{
public:
void method(){}
};
class Child : public Base
{
public:
void method()
{
std::cout << "child" << std::endl;
}
};
int main()
{
Base *base = new Child();
base->method();
return 0;
}
base->method() в данном случае ничего не выводит. Можете объяснить почему?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
class Base
{
public:
virtual void method(){}
};
Обратите внимание на ключевое слово virtual. Только виртуальные функции вызываются с использованием механизма динамического полиморфизма.
Не виртуальные функции-члены связываются во время компиляции статически, на основании указанного типа.