C++依然存在隐式类型转换
int num = 5;
double b = num;
不安全,无类型检查
强制类型转换运算符(不是一个函数):
static_cast
double b =static_cast(num);、转换成double类型
char ch = static_cast(num);
void与任意类型指针之间的转换
int p_num = #
void* ptr = static_cast<void*>(p_num);
int* p2 = static_cast<int >(ptr);
int p3 = (int*)ptr;
父类与子类之间的转换
const_cast
去除指针和引用的const属性
const int count = 5;
const int* p count = &count;
int* p_count2 = const_cast<int *>(p_count);
cout << count << endl;
去除引用
const int& r_count = count;
int& r_count2 = const_cast<int &>(r_count);
reinterpret_cast
任意指针类型转换
p_num = reinterpret_cast<int *>(p_ch);
强制类型转换:不安全
dynamic_cast
RTTI运行时类型信息