本篇文章給大家介紹C++中的幾種新式類型轉(zhuǎn)換。
一、static_caststatic_cast用法:
1.用于基本類型間的轉(zhuǎn)換
int a = 67;
char b = static_cast(a);//true
cout<< a<< endl;
cout<< b<< endl;
2.不能用于基本類型指針間的轉(zhuǎn)換
int a = 67;
char b = static_cast(a);//true
cout<< a<< endl;
cout<< b<< endl;
int* p = &a;
char* p1 = static_cast(p);//err
3.用于有繼承關(guān)系對象之間的轉(zhuǎn)換和類指針之間的轉(zhuǎn)換
#include#includeusing namespace std;
class Test
{public:
Test()
{cout<< "Test()"<< endl;
}
~Test()
{cout<< "~Test()"<< endl;
}
void print()
{cout<< "this is Test()"<< endl;
}
};
class Test1 :public Test
{public:
Test1()
{cout<< "Test1()"<< endl;
}
~Test1()
{cout<< "~Test1()"<< endl;
}
void printf_string()
{cout<< "string"<< endl;
}
};
int main()
{Test1 t1;
Test t2 = static_cast(t1);
return 0;
}
二、const_castconst_cast可以清除變量的只讀熟悉。
注意:強制轉(zhuǎn)換的目標(biāo)類型必須是指針或者引用。
此時a不能賦值為其他的數(shù)值,因為a是一個只讀變量
const int& a = 10;
a = 20;//err
使用const_cast清除a的只讀屬性
const_cast(a) = 20;//true
三、reinterpret_cast用于指針類型間的強制類型轉(zhuǎn)換
char a = 10;
char* p = &a;
int* p1 = reinterpret_cast(p);
用于整數(shù)和指針的強制類型轉(zhuǎn)換
int a = 0x220000;
int* p = reinterpret_cast(a);
四、dynamic_cast用于有繼承關(guān)系的類指針間的轉(zhuǎn)換
需要有虛函數(shù)的支持
class Test
{public:
Test()
{cout<< "Test()"<< endl;
}
virtual void print()
{cout<< "hello"<< endl;
}
~Test()
{cout<< "~Test()"<< endl;
}
};
class Test1 : public Test
{public:
Test1()
{cout<< "Test1()"<< endl;
}
void print()
{cout<< "hello world"<< endl;
}
~Test1()
{cout<< "~Test1()"<< endl;
}
};
Test1 t2;
Test1 *t = &t2;
Test *t1 = dynamic_cast(t);
總結(jié)這四個強制類型轉(zhuǎn)換是經(jīng)常使用的,希望大家掌握。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧