类型转换(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 风格类型转换。

  1. static_cast: 和 C 风格转换相似,可做值的强制转换,或指针的父类到子类的明确的向上转换;
  2. const_cast:移除 const 属性;
  3. reinterpret_cast:指针类型和整型或其他指针间不安全的相互转换,仅在你对所做一切了然于心时使用;
  4. dynamic_cast:除测试外不要使用,除单元测试外,如果你需要在运行时确定类型信息,说明设计有缺陷。
上一篇 下一篇

猜你喜欢

热点阅读