楼主的给的代码优点小问题,已修正,能跑了 class x { public: virtual void f(){ cout << "x" << endl; } }; class a :public x { public: virtual void f(){ cout << "a" << endl; } }; class b :public x { public: virtual void f(){ cout << "b" << endl; } }; class d :public a { public: virtual void f(){ cout << "d" << endl; } }; class e :public a { public: virtual void f(){ cout << "e" << endl; } }; int main() { vector<void*> v; /*1\. 对于自定义类类型: 如果该类没有定义构造函数(由编译器合成默认构造函数)但有虚函数, 那么class c = new class;和class c = new class();一样,都会调用默认构造函数。 */ v.push_back(new d); v.push_back(new a); v.push_back(new x); v.push_back(new b); v.push_back(new e); for (int i = 0; i<v.size(); i++) { static_cast<b*>(v[i])->f(); } return 0; }
点赞 3

相关推荐

人醒着就会困:直接回答,"你刚才提到你是百度JAVA,那么你相对于字节JAVA的优势在哪里?"
点赞 评论 收藏
分享
牛客网
牛客企业服务