stacic_cast
作用:对可转换的类型进行相应的类型转换
示例:
#include<iostream>
using namespace std;
int main() {
int a = 1;
int * b = (int *)a; //错误使用
//int *c = static_cast<int *>(a);//此处编译报错
int i = 5, j = 2;
double k = i / j;
cout << k << endl; //输出为2
double kk = static_cast<double>(i) / j;//进行强制转换以便执行浮点数除法,正确使用
cout << kk << endl;
return 0;
}
说明:传统C语言的强制转换,可以编译通过,但是将int类型转换为int*是没有意义的,有的时候类似此类的转换是有风险的,所以针对上述转换滥用的问题,C++引入了相关的类型转换,如下面代码,当()中的内容与<>中的内容不能相互转换时,编译会报错,这样会方便查找错误,并且不会产生隐患。
const_cast
const_cast只能消除运算对象的底层const,因此const_cast中<>中的类型必须是,指针、引用或指向对象类型的成员的指针