Вызов переопределенной функции из переменной базового класса
#include <iostream>
using namespace std;
class Parent
{
public:
virtual void say()
{
cout << "I'm a parent!" << endl;
}
};
class Child : public Parent
{
public:
virtual void say()
{
cout << "I'm a child!" << endl;
}
};
int main()
{
Child c;
Parent p = c;
p.say();
cout << "Hello World!" << endl;
return 0;
}
Данный код выдает в консоль:
I'm a parent!
Hello World!
Можно ли вызвать переопределенную функцию из переменной базового класса? (тоесть, чтобы выводилось I'm a child!) Если нельзя, то можно ли как-нибудь вызвать ее каким-либо способом, кроме использования указателей?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Можно. Но только для этого надо использовать ссылку:
Parent& p = c;
Так, как написали вы - вы получаете объект Parent (со срезкой), и вызывается, соответственно, его метод - здесь нет никакого Child.