本篇文章給大家分享的是有關(guān)C++中怎么強(qiáng)制類型轉(zhuǎn)換函數(shù),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
10多年的昌黎網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整昌黎建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“昌黎網(wǎng)站設(shè)計”,“昌黎網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實(shí)執(zhí)行。
1)static_cast<T*>(a)
將地址a轉(zhuǎn)換成類型T,T和a必須是指針、引用、算術(shù)類型或枚舉類型。
表達(dá)式static_cast<T*>(a), a的值轉(zhuǎn)換為模板中指定的類型T.在運(yùn)行時轉(zhuǎn)換過程中,不進(jìn)行類型檢查來確保轉(zhuǎn)換的安全性。
例子:
class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針B* pb2 = static_cast<B*>(pd); // 安全的 ... } class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針 B* pb2 = static_cast<B*>(pd); // 安全的 ... } class B { ... }; class D : public B { ... }; void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // 不安全, pb可能只是B的指針 B* pb2 = static_cast<B*>(pd); // 安全的 ... }
2)dynamic_cast<T*>(a)
完成類層次結(jié)構(gòu)中的提升。T必須是一個指針、引用或無類型的指針。a必須是決定一個指針或引用的表達(dá)式。
表達(dá)式dynamic_cast<T*>(a) 將a值轉(zhuǎn)換為類型為T的對象指針。如果類型T不是a的某個基類型,該操作將返回一個空指針。
例子:
class A { ... }; class B { ... }; void f() { A* pa = new A; B* pb = new B; void* pv = dynamic_cast<A*>(pa); // pv 現(xiàn)在指向了一個類型為A的對象 ... pv = dynamic_cast<B*>(pb); // pv 現(xiàn)在指向了一個類型為B的對象 }
3)const_cast<T*>(a)
去掉類型中的常量,除了const或不穩(wěn)定的變址數(shù),T和a必須是相同的類型。
表達(dá)式const_cast<T*>(a)被用于從一個類中去除以下這些屬性:const, volatile, 和 __unaligned.
例子:
class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現(xiàn)在OK了 ... } class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現(xiàn)在OK了 ... } class A { ... }; void f() { const A *pa = new A;//const對象 A *pb;//非const對象 //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象 pb = const_cast<A*>(pa); // 現(xiàn)在OK了 ... }
4)reinterpret_cast<T*>(a)
任何指針都可以轉(zhuǎn)換成其它類型的指針,T必須是一個指針、引用、算術(shù)類型、指向函數(shù)的指針或指向一個類成員的指針。
表達(dá)式reinterpret_cast<T*>(a)能夠用于諸如char* 到 int*,或者One_class* 到 Unrelated_class*等類似這樣的轉(zhuǎn)換,因此可能是不安全的。
例子:
class A { ... }; class B { ... }; void f() { A* pa = new A; void* pv = reinterpret_cast<A*>(pa); // pv 現(xiàn)在指向了一個類型為B的對象,這可能是不安全的 ... }
以上就是C++中怎么強(qiáng)制類型轉(zhuǎn)換函數(shù),小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前文章:C++中怎么強(qiáng)制類型轉(zhuǎn)換函數(shù)
網(wǎng)頁路徑:http://chinadenli.net/article18/jiiedp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、搜索引擎優(yōu)化、營銷型網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)