关于vector容器和virtual函数的问题!高手进,在线等。
我定义了一个父类。然后又定义了3个子类。 在父类中我定义了一个虚函数,然后我定义了一个vectror变量,定义的时候是用来储存父类变量的。然后我把3个子类的对象储存到了vector变量中了。然后我用vector的迭代器遍历容器。让容器内的对象调用那个虚函数,为什么调用的都是父类的函数?? 举个例子
class father
{
virtual void fn()
{
......
}
}
class son1
{
void fn()
{
}
}
class son1
{
void fn()
{
}
}
class son1
{
void fn()
{
}
}
son1 son11;
son2 son22;
son3 son33;
vector <father> vec;
vec.push_back(son11)
....
vector <father> ::iterator ite = vec.begin();
ite-> fn() //为什么这里调用的不是SON1 的fn函数,而是father的fn函数??
[解决办法]
程序结束前记得要再遍历一遍vector delete所有的对象.