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; }