C++ dynamic_cast用法

#include <iostream> #include <string> using namespace std;

class CPerson {

public:  CPerson(){}  ~CPerson(){}  virtual void Walk(){cout << "CPerson Walk" << endl;}     };

class CManager: public CPerson { public:  CManager(){}  ~CManager(){};

 virtual void Walk() {cout << "CManager Walk" << endl;}  virtual void SendCommand(){cout << "CManager Send Command" << endl;} }; void main() {

 CPerson *person;  CManager *manager;  person = new CManager();  person->Walk();

 manager = static_cast<CManager *>(person); //使用dynamic_cast,OK,否则不能通过编译,如果转换失败,则返回NULL

 

 if (manager)  {   manager->SendCommand();   manager->Walk();  }  else  {   cout << "转换失败" << endl;

 }     /// manager = new CPerson; //注意这里报错  int wait;  cin >> wait; }  

posted @ 2013-07-05 21:34  Predator  阅读(190)  评论(0编辑  收藏  举报