Я пытаюсь немного с полиморфизмом с в следующем фрагменте кода:Виртуальная переопределяется функция не вызывался
#include <iostream>
#include <vector>
using namespace std;
struct Foo {
virtual void f() {
cout << "f from Foo" << endl;
}
};
struct Bar : public Foo {
void f() {
cout << "f from Bar" << endl;
}
};
int main() {
Foo foo;
Bar bar;
vector<Foo> fooV;
fooV.push_back(foo);
fooV.push_back(bar);
for(auto it = fooV.begin(); it != fooV.end(); ++it)
it->f();
}
я ожидал, что с f()
переопределяется, один из них будет печатать «п от Foo» и другой «f из бара». Тем не менее, выход программы
f from Foo
f from Foo
Я хотел бы также отметить, что я также попытался добавить ключевое слово override
к объявлению f()
в Bar
, так как я использую C++ 11. Это не имело никакого эффекта.