您好,登錄后才能下訂單哦!
C語(yǔ)言中經(jīng)常可以見(jiàn)到一些強(qiáng)制類(lèi)型轉(zhuǎn)化,主要是在變量名前加(類(lèi)型)。而在c++中與c語(yǔ)言也有一些差異,C++中主要有四種強(qiáng)制類(lèi)型轉(zhuǎn)化。
static_cast它的主要轉(zhuǎn)化是對(duì)于相關(guān)類(lèi)型之間的轉(zhuǎn)化
int main()
{
float a = 1.2;
int b = static_cast<int>(a);
cout << b << endl;
getchar();
return 0;
}
2.reinterpret_cast它的主要轉(zhuǎn)化是對(duì)于不相關(guān)類(lèi)型之間的轉(zhuǎn)化
int main()
{
int a = 1;
int *p = &a;
int b = reinterpret_cast<int>(p);
cout << b << endl;
getchar();
return 0;
}
3.const_cast 是解除const類(lèi)型的變量,使之可以改變變量的值
int main()
{
volatile const int a = 1;
int *p = const_cast<int *>(&a);
*p = 2;
cout << a << endl;
getchar();
return 0;
}
4.dynamic_cast是動(dòng)態(tài)轉(zhuǎn)化,它主要作用:1.只能用于含有虛函數(shù)的類(lèi) 2.先檢查是否轉(zhuǎn)化成功,若成功轉(zhuǎn)化則轉(zhuǎn)換,若不能就返回0
class A
{
public:
int _a;
virtual void show()
{}
};
class B :public A
{
public:
int _b;
};
void test()
{
A a;
B b;
B *pb =dynamic_cast<B *>(&a);
cout << pb << endl;
}
int main()
{
test();
getchar();
return 0;
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。