类型强转的那些坑

来源:互联网 发布:小旭音乐 知乎 编辑:程序博客网 时间:2024/06/07 00:15
#include <iostream>#include <Windows.h>using namespace std;class base{public:virtual void f() { cout << "Base::f" << endl; }int type;};class Derive :public base{public: Derive(){type = 1;}void f() { cout << "Derive::f" << endl; }void f1() { cout << "Derive::f1" << endl; }int type;};class Derive2 :public base{public:Derive2(){type = 2;}void f() { cout << "Derive2::f" << endl; }void f2() { cout << "Derive2::f2" << endl; }int type;};void main(){base *b = new Derive();/*Derive2* pb = (Derive2*)b;pb->f2();//如果二个子类是很复杂的,很多时候这里就会报错 */if(b->type == 2)//正确的使用方式应该判断一下子类的原始类型{Derive2* pb = (Derive2*)b;pb->f2();}system("pause");}

0 0
原创粉丝点击