Colleague02 继承自 Colleague, 父类Colleague中带有 update 虚函数,方便子类重写。
目的:vector中保存父类的-对象/指针/引用,通过容器中的元素访问到子类的方法。
class Colleague
{
protected: // 在子类中可以访问到
public:
virtual void update(){
cout << " 父类的 update " << endl;
}
// 函数体还是要有的,不然报错
//error LNK2001: 无法解析的外部符号
//"public: virtual void __thiscall Colleague::update(void)"
};
class Colleague02 :public Colleague {
private:
public:
void update() { // 子类中实现
cout << " 子类的 update " << endl;
}
};
1:容器中保存父类的对象
无法达到目的
vector<Collegue>lt;
vector<Collegue>lt;
void add(Collegue &a) { // 要想实现重写,参数必须为父类对象的-引用/指针
a.update(); // 子类的update
lt.push_back(a); //
lt[0].update(); // 父类的update
}
2:容器中保存父类的对象的引用
vector<Collegue&>lt;
报错:“abstract declarator”: 指向引用的指针非法
3:容器中保存父类的对象的指针
可以实现目的
vector<Collegue*>lt;
vector<Collegue>lt;
void add(Collegue *a) { // 要想实现重写,参数必须为父类对象的-引用/指针
a->update(); // 子类的update
lt.push_back(a); //
lt[0]->update(); // 子类的update
}