- reinterpret_cast
reinterpret_cast(expression)
将一个类型的指针转换为另一个类型的指针,它允许从一个指针转换为整数类型。
void test01() {
char a = 0;
int* p = reinterpret_cast(&a);
//不安全
}
- const_cast
常量const指针与普通指针之间的相互转化。
如果不用const_cast:一般编译器直接报错。
用const_cast之后
void test02() {
const int a = 4;
int b = 10;
//int* p = &a;
int* p = const_cast(&服务器托管网a);//可以强制转换,但很危险
cout
可见还是很危险的。语法生成的时候虽然没报错,但运行说不定就会出错。
- static_cast
主要用于基本类型之间的相互转换,和具有继承关系间的类型转换。
一般情况下的基类指针或引用指向子类时
用static_cast强制转换。
void test03() {
A a;
//B& p = a;
B& p = static_ca服务器托管网st(a);
//可以这样转,但是也比较危险
}
- dynamic_cast
只有类中有虚函数才能用dynamic_cast
dynamic_cast具有类型检查功能,比static_cast更安全
void test04() {
try {
A a;
B& p = dynamic_cast(a);
}
catch (bad_cast err) {
cout
结果出现Bad dynamic_cast;
总结:C++中提供的四种强制类型转换在一定的特殊情况下可以使用,但各有各的危险。
但,在C++中可以自己实现 自定义转换函数。
下篇更新自定义转换函数
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: IPQ4019 IPQ4029 Platform DR40x9 23KM-30KM Long Range|802.11AC Solution
IPQ4019 IPQ4029 Platform DR40x9 Provide 23-30K服务器托管网M Long Range Transfer AP Controller Support Openwrt Openwifi|802.11AC Solution…