0%

C++ 标准转换运算符 static_cast 用法

C++ #标准转换运算符 static_cast 用法

static_cast是一个c++标准类型转换运算符.

除了可以用于下面几种基本类型的转换:

  • 整型和浮点型
  • 字符和整型
  • 空指针和任何目标类型的指针

还可以用于基类和派生类之间的转换,但是没有运行时检查,也就是说可以从子类转换成父类,不建议从父类转换成子类

不可以用于风险较高的转换:

  • 不同类型的指针之间互相转换
  • 整型和指针之间的互相转换
  • 不同类型的引用之间的转换

如下代码表示从子类mode转换成父类uint32_t

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

enum class mode : uint32_t {

mode_0 = 0,
mode_1,
mode_2,
mode_3 = 0x1000,
mode_4,
};

using namespace std;

int main() {

mode temp_mode = mode::mode_4;
cout << "hello world " << std::hex << static_cast<uint32_t>(temp_mode);
return 0;
}