网站首页 > 基础教程 正文
编号 | CON#006 |
标题 | 尽可能优先使用static_cast而不是reinterpret_cast |
语言 | C++ |
级别 | 4 |
类别 | 转换 |
规范说明
static_cast是从一种类型到另一种类型的转换,对于这种转换,存在已知的转换方法。例如,你可以将int静态转换为char,因为这样的转换是有意义的。然而,你不能将int静态转换为double,因为这种转换只有在int以某种方式被篡改以指向double时才有意义。
reinterpret_cast是一种表示不安全转换的转换,可能会将一个值的位重新解释为另一个值的位。例如,使用reinterpret_cast将int转换为double是合法的,尽管结果是未指定的。类似地,使用reinterpret_cast将int转换为void*也是完全合法的,尽管这是不安全的。
无论是static_cast还是reinterpret_cast都不能从某物中移除const。你不能使用这两种转换中的任何一种将const int转换为int。为此,你将使用const_cast。
一般来说,对于应该是安全的转换,你应始终优先使用static_cast。如果你不小心尝试进行未明确定义的转换,那么编译器会报告错误。只有在确实需要改变机器中某些位的解释时,才使用reinterpret_cast。
参考文献
StackOverflow Q6855686
猜你喜欢
- 2024-10-12 C++中override与overload的区别:深入解析与应用
- 2024-10-12 C++中的static_cast #程序代码 c++ static用法
- 2024-10-12 为什么C++ 单例局部static初始化是线程安全的?
- 2024-10-12 C++类对象中的this指针与静态成员:理解与应用
- 2024-10-12 看完就会用的C++17特性总结 c++ 17 新特性
- 2024-10-12 C++|变量的类型系统和属性 c++变量有哪几种作用域
- 2024-10-12 C++友元和静态函数:如何用特殊的方式访问和管理类的成员
- 2024-10-12 C++中的static关健字 c static关键字
- 2024-10-12 C++静态成员变量和静态成员函数使用总结
- 2024-10-12 C++知识分享:静态成员变量,你弄懂了吗?
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)