Overriding parent class's function [duplicate]
This question already has an answer here: vector of objects 5 answers class classa { public: virtual void foo(); }; class classb : public classa { public: virtual void foo() override; }; void classa::foo() { std::cout << "foo from a" << std::endl; } void classb::foo() { std::cout << "foo from b" << std::endl; } int main() { std::vector<classa> stuff; classa a; classb b; stuff.push_back(a); stuff.push_back(b); stuff[0].foo(); stuff[1].foo(); return 0; } I expected the above code to return foo from a foo from b but it returns both as foo from a . I think this is because the vector stores classa