一:首先是做同类型的类进行转换。有同一个基类的几个子类应用虚函数可以达到动态指定的效果
输出:
----------------------
DerivedOne::foo()
DerivedTwo::foo()
-----------------------
#include <iostream> #include <string> #include <cmath> #include <fstream> using namespace std; class Base { public: virtual ~Base() {} }; class Fooer { public: virtual void foo(){}; }; class DerivedOne : public Fooer { public: void foo() { cout << "DerivedOne::foo()\n"; } }; class DerivedTwo : public Fooer { public: void foo() { cout << "DerivedTwo::foo()\n"; } }; class DerivedThree: public Fooer{ }; int main() { Fooer* bps[3]; bps[0] = new DerivedOne(); bps[1] = new DerivedTwo(); bps[2] = new DerivedThree(); for ( int i = 0; i < 3; ++i ) { Fooer* thisOne = dynamic_cast<Fooer*>( bps[i] ); if ( thisOne ) thisOne->foo(); else{ cout<<"nothing"<<endl; } } }