码迷,mamicode.com
首页 > 编程语言 > 详细

c++四种类型转换操作符简要总结

时间:2014-08-03 17:46:25      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   使用   io   ar   div   line   c++   res   

1.  static_cast<target>(expression)

  • 可用于存在继承关系的类指针/引用之间的向上向下转换。执行向下转换时没有安全检查(区别于dynamic_cast),所以如果实际类型与目标类型不符合,编译虽然可以通过,但运行时的后果未定义。
  • void*指针转换为实际的指针
  • 其他基本类型的隐式转换以及反方向的转换,如:int <-> double

2.  dynamic_cast<target>(expression)

  • 只能用于target为类指针或者引用,或者void*的情形
  • 可以用来在基类和派生类之间的向上或者向下转换。(注:向下转换时,基类必须含有虚函数,因为dynamic_cast需要查询RTTI,而RTTI存放于虚函数表中)
  • 不能用在钻石型结构的非虚多重继承的跃级转换(因为非虚继承的越级转换是有歧义的)
  • 目标类型是指针时,如果转换失败,则返回空指针;目标类型为引用时,失败时抛出bad_cast异常

3. const_cast<target>(expression)

  • 可以用于去掉或者加上const或者volatile属性
  • 最常见的使用方式是,调用某些要求非const参数的函数,而该函数实际上并不修改该参数,则可以使用该操作符为该参数去掉const。若使用该操作符将const对象的const属性去掉并加以修改,则会导致不可预见的错误。
  • 只有该操作符可以去掉const属性,即使reinterpret_cast也不行

4. reinterpret_cast<target>(expression)

  • 危险的转换符,类型之间的直接转换,应该尽量避免使用。

 

c++四种类型转换操作符简要总结,布布扣,bubuko.com

c++四种类型转换操作符简要总结

标签:style   使用   io   ar   div   line   c++   res   

原文地址:http://www.cnblogs.com/yunping83/p/3888535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!