www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計(jì)自動化
[導(dǎo)讀]標(biāo)準(zhǔn)c++中主要有四種強(qiáng)制轉(zhuǎn)換類型運(yùn)算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast<T*>(a) 將地址a轉(zhuǎn)換成類型T,T和a必須是指針、引用、算術(shù)類型或枚舉類型。 表達(dá)式stati

標(biāo)準(zhǔn)c++中主要有四種強(qiáng)制轉(zhuǎn)換類型運(yùn)算符:

const_cast,reinterpret_cast,static_cast,dynamic_cast等等。

1)static_cast<T*>(a)

將地址a轉(zhuǎn)換成類型T,T和a必須是指針、引用、算術(shù)類型或枚舉類型。

表達(dá)式static_cast<T*>(a), a的值轉(zhuǎn)換為模板中指定的類型T.在運(yùn)行時(shí)轉(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必須是一個(gè)指針、引用或無類型的指針。a必須是決定一個(gè)指針或引用的表達(dá)式。

表達(dá)式dynamic_cast<T*>(a) 將a值轉(zhuǎn)換為類型為T的對象指針。如果類型T不是a的某個(gè)基類型,該操作將返回一個(gè)空指針。

例子:

class A { ... };

class B { ... };

void f()

{

A* pa = new A;

B* pb = new B;

void* pv = dynamic_cast<A*>(pa);

// pv 現(xiàn)在指向了一個(gè)類型為A的對象

...

pv = dynamic_cast<B*>(pb);

// pv 現(xiàn)在指向了一個(gè)類型為B的對象

}

3)const_cast<T*>(a)

去掉類型中的常量,除了const或不穩(wěn)定的變址數(shù),T和a必須是相同的類型。

表達(dá)式const_cast<T*>(a)被用于從一個(gè)類中去除以下這些屬性: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必須是一個(gè)指針、引用、算術(shù)類型、指向函數(shù)的指針或指向一個(gè)類成員的指針。

表達(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)在指向了一個(gè)類型為B的對象,這可能是不安全的

...

}



來源:向明天進(jìn)軍0次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

北京——2024年10月29日 亞馬遜云科技日前宣布,通過與光環(huán)新網(wǎng)與西云數(shù)據(jù)的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java Lambda函數(shù)的...

關(guān)鍵字: 函數(shù) 數(shù)據(jù)處理

北京2024年10月29日 /美通社/ -- 亞馬遜云科技日前宣布,通過與光環(huán)新網(wǎng)與西云數(shù)據(jù)的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java La...

關(guān)鍵字: START 亞馬遜 PS 函數(shù)

關(guān)于數(shù)據(jù)分析與可視化,以下介紹Pandas讀取數(shù)據(jù)以及保存數(shù)據(jù)的方法,畢竟我們很多時(shí)候需要讀取各種形式的數(shù)據(jù),以及將我們需要將所做的統(tǒng)計(jì)分析保存成特定的格式。

關(guān)鍵字: 函數(shù) Panda

深圳2024年8月15日 /美通社/ -- 近日,知名量化交易平臺水母量化正式推出了突破性的輪動交易策略回測功能,目前已進(jìn)入公測階段。該功能實(shí)現(xiàn)了從策略設(shè)計(jì)、歷史回測到實(shí)盤自動交易一體化流程,幫用戶解決了策略驗(yàn)證難、交易...

關(guān)鍵字: 編程 仿真 函數(shù) 開源

Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會的吉多·范羅蘇姆于1990年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。 Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭?/p> 關(guān)鍵字: python 函數(shù) 對象編程

測試數(shù)據(jù)綜合分析的絕佳工具,深受工程師和研究員歡迎

關(guān)鍵字: 后處理分析軟件 向?qū)?/a> 函數(shù)

由上圖中可以知道進(jìn)程地址空間中最頂部的段是棧,代碼中調(diào)用函數(shù)、定義局部變量(但不包含static修飾的變量)或聲明的類的實(shí)例等等都要使用??臻g,當(dāng)函數(shù)執(zhí)行完(也就是程序執(zhí)行超過了這個(gè)函數(shù)的作用范圍的時(shí)候),操作系統(tǒng)會把該...

關(guān)鍵字: 進(jìn)程地址 局部變量 函數(shù)

星標(biāo)/置頂?公眾號,硬核文章第一時(shí)間送達(dá)!鏈接|?https://zhuanlan.zhihu.com/p/274473971題很多,先上題后上答案,便于大家思考問題點(diǎn):1、C和C的特點(diǎn)與區(qū)別?2、C的多態(tài)3、虛函數(shù)實(shí)現(xiàn)...

關(guān)鍵字: 騰訊 函數(shù) 進(jìn)程 AI

程序接口是操作系統(tǒng)為用戶提供的兩類接口之一,編程人員在程序中通過程序接口來請求操作系統(tǒng)提供服務(wù)。面向過程語言最基本的單元是過程和函數(shù)。

關(guān)鍵字: 程序接口 過程 函數(shù)

星標(biāo)「嵌入式大雜燴」,一起進(jìn)步!鏈接:https://www.cnblogs.com/jozochen/p/8541714.html一、問題復(fù)現(xiàn)穩(wěn)定復(fù)現(xiàn)問題才能正確的對問題進(jìn)行定位、解決以及驗(yàn)證。一般來說,越容易復(fù)現(xiàn)的問...

關(guān)鍵字: 嵌入式開發(fā) 函數(shù) 代碼 寄存器
關(guān)閉