溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

c++中一些強(qiáng)制類(lèi)型轉(zhuǎn)化

發(fā)布時(shí)間:2020-06-22 21:37:40 來(lái)源:網(wǎng)絡(luò) 閱讀:246 作者:走走停停吧 欄目:編程語(yǔ)言

C語(yǔ)言中經(jīng)常可以見(jiàn)到一些強(qiáng)制類(lèi)型轉(zhuǎn)化,主要是在變量名前加(類(lèi)型)。而在c++中與c語(yǔ)言也有一些差異,C++中主要有四種強(qiáng)制類(lèi)型轉(zhuǎn)化。

  1. 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;

}


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI