[C++ Inheritance] Извикване на функция от обект и от указател към обект...
Здравейте,
Имаме класове родител и наследник. Родителя има функция, която се презаписва от наследника.
#include <iostream>
class Base
{
public:
virtual void foo() { std::cout << "Base class foo\n"; };
};
class Derived : public Base
{
public:
void foo() { std::cout << "Derived class foo\n"; };
};
int main()
{
Base *d1 = new Derived();
d1->foo(); // Print "Derived class foo"
delete d1;
Base d2 = Derived();
d2.foo(); // Print "Base class foo"
return 0;
}
Ако направим поинтер от тип на "базовия" клас и го инициализираме с обект от тип "наследник", и извикаме презаписаната функция - извиква се функцията от наследника. - ок...
Ако направим обект от тип на "базовия" клас и го инициализираме с обект от тип "наследник", и извикаме презаписаната функция - извиква се функцията от родителя. - проблем...
Въпросът ми е към втората част - не трябва ли да се извика презаписаната фунцкия при положение, че обекта е от тип наследник? Защо се извиква функцията на базовия клас?
Поздрави,
Ники