• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++常用的数据类型强制转换方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

dynamic_cast < type-id > ( expression )

该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *; 
dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换
class B
{
   public:   
  int m_iNum;  
  virtual void foo();  
};   
class D:public B
{   
   public:  
       char *m_szName[100];  

};  
void func(B *pb)
{   
 D *pd1 = static_cast<D *>(pb);  
 D *pd2 = dynamic_cast<D *>(pb);  
}

在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全

 

 

int main(int argc, char* argv[])
{
  
 /*
 static_cast 基本的数据类型转换
 int i=5;
 float g=34.4;
 i=static_cast<int>(g);
 cout<<i<<endl;

    static_cast 不能用于指针转换
 错误:'static_cast' : cannot convert from 'char *' to 'int *'
 */


 /*
 把空指针转换成目标类型的空指针 
 void * vp;  
 char * cp=static_cast<char *>(vp); 
 */

 /*
 reinterpret_cast主要是将数据从一种指针类型的转换为另一种指针类型。
 char *cp;
 int * ip;
 ip=reinterpret_cast<int *>(cp);
 */
 
 /*
 const_cast 去除常量指针,转换非常量指针  and 常量对象被转换成非常量对象。

 const char * const_cp;  
 char * nonconst_cp=const_cast<char *>(const_cp);
 */

 /*dynamic_cast 该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *;
 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。
  
 */
 return 0;

}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
2012届华为上机试题之C语言-排序发布时间:2022-07-18
下一篇:
C++时间类型详解(time_t和tm)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap