#include <iostream>
#include <vector>
using namespace std;
class Animal {
public:
virtual void run() { cout << "animal run"; }
};
class horse :public Animal
{
public:
void run() { cout << "horse pao" << endl; }
};
class pig :public Animal
{
public:
void run() { cout << "pig run" << endl; }
};
int main(void) {
vector<Animal*> vecint;
Animal* ls1 = new horse();
vecint.push_back(ls1);
Animal* ls2 = new pig();
vecint.push_back(ls2);
vector<Animal*>::iterator it;
for (it = vecint.begin(); it != vecint.end(); it++)
(*it)->run();
getchar();
return 0;
}
如果把类Animal类中virtual去掉,再次执行代码,结果如下: