Вот что-то я не смог осилить такую простую вещь как переопределение методов при наследовании.
#include <iostream>
class foo
{
public:
virtual void print() { std::cout << "foo\n";}
};
class bar : public foo
{
public:
void print() override { std::cout << "bar\n";}
};
void fun(foo f)
{
f.print();
}
int main()
{
foo f;
bar b;
f.print();
b.print();
std::cout << "===========\n";
fun(b);
return 0;
}
Вот по всем моим понятиям он после горизонтальной черты должен написать bar, a пишет foo :-(
Почему он так со мной, и что я делаю не так?
Мне то как раз надо чтобы позвали метод наследника, раз его передали в качестве параметров…