Вот что-то я не смог осилить такую простую вещь как переопределение методов при наследовании.
#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 :-(
Почему он так со мной, и что я делаю не так?
Мне то как раз надо чтобы позвали метод наследника, раз его передали в качестве параметров…




