#include <iostream>
#include <vector>
using namespace std;
class Parent {
public:
Parent();
void method();
};
class Child: public Parent {
public:
Child();
void method();
};
int main() {
vector<Parent> v;
v.push_back(Parent());
v.push_back(Child());
v[0].method();
v[1].method();
return 0;
}
Parent::Parent() {}
void Parent::method() {
cout << "Parent." << endl;
}
Child::Child() {}
void Child::method() {
cout << "Child." << endl;
}
В принципе, я ожидаю, что эта программа напечатает
Parent.
Child.
но печатает это вместо:
Parent.
Parent.
C ++ удивляет меня еще раз:).
Почему это происходит? Что я могу сделать, чтобы вызвать Child :: method для экземпляров Child в векторе и Parent :: method для экземпляров Parent?
Я использую gcc:
gcc version 4.6.1 20110819 (prerelease) (GCC)
как это:
g++ -Wall -Wextra -c main.cpp
g++ -Wall -Wextra -o main main.o