本文用示例讲解了动态转换、静态转换子类与基类之间转换功能的使用方法
首先动态转换:复制代码代码如下:#包含iostreamusing命名空间stdA类{ public: virtual ~A(){} //使用动态转换时,必要!};B类:public A { public:B(){ m _ B=12;} void foo(){ cout ' b:' m _ bendl;} private:int m _ b;};int main(){ A * A=new B();b * b=dynamic _ castB *(a);b-foo();删除a;返回0;}
上面没有虚拟~A(){},编译时会报错:(源类型不是多态得).
静态转换:复制代码代码如下:#包含iostreamusing命名空间STD class A { public:A():m _ A(32){ } void foo(){ cout ' A:' m _ aendl;} void setA(int a){ m _ a=a;} private:int m _ a;};B类:public A { public:B(){ m _ B=12;刚毛(13);} void foo(){ cout ' b:' m _ bendl;} private:int m _ b;};int main(){ A * A=new B();b * b=static _ castB *(a);a * aa=static _ castA *(b);b-foo();aa-foo();删除a;返回0;}
打印a、b、aa地址,可知地址一样。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。