今天看到一段代码,用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; }