源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c++ dynamic_cast与static_cast使用方法示例

  • 时间:2020-12-08 16:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c++ dynamic_cast与static_cast使用方法示例
首先dynamic_cast:
[u]复制代码[/u] 代码如下:
#include <iostream> using namespace std; class A{     public:         virtual ~A(){} //使用dynamic_cast时,必要! }; class B:public A{     public:         B(){             m_b=12;         }         void foo(){             cout<<"B: "<<m_b<<endl;         }     private:         int m_b; }; int main() {        A *a=new B();     B *b=dynamic_cast<B*>(a);     b->foo();     delete a;     return 0; }
上面没有virtual ~A(){},编译时会报错:(source type is not polymorphic)。 static_cast:
[u]复制代码[/u] 代码如下:
#include <iostream> using namespace std; class A{     public:         A():m_a(32){}         void foo(){             cout<<"A: "<<m_a<<endl;         }         void setA(int a){             m_a=a;         }     private:         int m_a; }; class B:public A{     public:         B(){             m_b=12;             setA(13);         }         void foo(){             cout<<"B: "<<m_b<<endl;         }     private:         int m_b; }; int main() {        A *a=new B();     B *b=static_cast<B*>(a);     A *aa=static_cast<A*>(b);     b->foo();     aa->foo();     delete a;     return 0; }
打印a、b、aa地址,可知地址一样。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部