今天看到一段代码,用dynamic_cast将每个vector的成员cast到基类。但是,如果基类是一个纯虚类,似乎没有这个必要。以下是我的实验:
#include <iostream>
#include <vector>
using namespace std;
class Father{
public:
virtual void get()=0;
};
class Son: public Father{
public:
void get(){ cout<<"Son"<<endl;}
};
class Daughter: public Father{
public:
void get() {cout<<"Doughter"<<endl;}
};
int main(){
vector<Father *> a;
Son s1;
a.push_back(&s1);
Daughter d1;
a.push_back(&d1);
for(size_t i=0;i<a.size();i++){
//Father *ts = dynamic_cast<Father *>(a[i]);
//ts->get();
a[i]->get();//可以获得与上两行一样的结果
}
return 0;
}