chenpingjun1990

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 22 文章 :: 5 评论 :: 0 Trackbacks
                      C++强制类型转换
                                           From C++ Primer 中文版(第四版)158-160
     显示转换(explicit conversion)也称强制类型转换,主要包括一下四种强制类型转换操作符:
static_cast dynamic_cat const_cast 以及 reinterpret_cast.
     强制类型转换的一般格式 cast_name<type>(expression)
1. static_cast
    编译器隐式执行的任何类型转换都可以由static_cast显示完成:
强制类型转换告诉程序的读者和编译器:我们并不关心潜在的精度损失。对于从一个较大的算术类型到一个
较小类型的赋值,编译器通常会产生警告。当我们显示提供强制类型转换时,警告信息就会被关闭。
   ex. double d = 97.0;
         char ch = static_cast<char>(d);
2.dynamic_cast
    dynamic_cast支持运行时识别指针或引用所指向的对象。
3.const_cast
    添加或者删除const特性。
   ex. const char *pc_str;
        char *pc = string_copy(const_cast<char *>(pc_str));
4.reinterpret_cast
    reinterpret_cast通常为操作数的位模式提供较低层次的重新解释。

      强制类型转换关闭或者挂起了正常的类型检查。强烈建议程序员避免使用强制类型转换,不依赖强制类型转换也能
写出很好的C++程序。
      每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法可以达到同一目的。如果非强制转换不可,
则应限制转换值的作用域,并且记录所有假定涉及的类型,这样能减少错误发生的机会。
posted on 2011-11-25 10:48 万川先生 阅读(255) 评论(0)  编辑 收藏 引用 所属分类: Cplusplus