专业编程基础技术教程

网站首页 > 基础教程 正文

编码规范-C++:尽可能使用static_cast而不是reinterpret_cast

ccvgpt 2024-10-12 13:57:23 基础教程 7 ℃

编号

CON#006

编码规范-C++:尽可能使用static_cast而不是reinterpret_cast

标题

尽可能优先使用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

最近发表
标签列表