类型转换(casting)
2019-05-31 本文已影响0人
吃柠檬的鸮
用 static_cast<>()
等 C++ 的类型转换, 不要使用 int y = (int)x; 或 int y = int(x);。
定义: C++引入了有别于C的不同类型的类型转换操作。
优点: C语言的类型转换问题在于操作比较含糊:有时是在做强制转换(如 (int)3.5 ), 有时是在做类型转换(如 (int)"hello" )。另外, C++ 的类型转换查找更容易、更醒目。
缺点: 语法比较恶心 。
结论: 使用 C++ 风格而不要使用 C 风格类型转换。
-
static_cast
: 和 C 风格转换相似,可做值的强制转换,或指针的父类到子类的明确的向上转换; -
const_cast
:移除const
属性; -
reinterpret_cast
:指针类型和整型或其他指针间不安全的相互转换,仅在你对所做一切了然于心时使用; -
dynamic_cast
:除测试外不要使用,除单元测试外,如果你需要在运行时确定类型信息,说明设计有缺陷。