C++ 四种强制类型转换

来源:互联网 发布:stc89c51数据手册 编辑:程序博客网 时间:2024/05/20 18:01
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++程序。
      每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法可以达到同一目的。如果非强制转换不可,
则应限制转换值的作用域,并且记录所有假定涉及的类型,这样能减少错误发生的机会。
原创粉丝点击