#include #include class Base { public: virtual void f() { std::cout << "Base\n"; } }; class Derived: public Base { public: virtual void f() { std::cout << "Derived\n"; } }; int main() { std::vector s; Base a; s.push_back(a); Derived b; s.push_back(b); for (std::vector::iterator it = s.begin(); it != s.end(); ++it) it->f(); return 0; }