国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast)

這篇具有很好參考價(jià)值的文章主要介紹了【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??博客主頁: 主頁
??系列專欄: C++
??感謝大家點(diǎn)贊??收藏?評論??
??期待與大家一起進(jìn)步!



C語言中的類型轉(zhuǎn)換

  1. 隱式類型轉(zhuǎn)化:編譯器在編譯階段自動(dòng)進(jìn)行,能轉(zhuǎn)就轉(zhuǎn),不能轉(zhuǎn)就編譯失敗
  2. 顯式類型轉(zhuǎn)化:需要用戶自己處理

缺陷:
轉(zhuǎn)換的可視性比較差,所有的轉(zhuǎn)換形式都是以一種相同形式書寫,難以跟蹤錯(cuò)誤的轉(zhuǎn)換

標(biāo)準(zhǔn)C++為了加強(qiáng)類型轉(zhuǎn)換的可視性,引入了四種命名的強(qiáng)制類型轉(zhuǎn)換操作符:
static_cast、reinterpret_cast、const_cast、dynamic_cast

一、static_cast

static_cast用于非多態(tài)類型的轉(zhuǎn)換(靜態(tài)轉(zhuǎn)換),編譯器隱式執(zhí)行的任何類型轉(zhuǎn)換都可用static_cast,但它不能用于兩個(gè)不相關(guān)的類型進(jìn)行轉(zhuǎn)換。

int main()
{
  double d = 12.34;
  int a = static_cast<int>(d);
  cout<<a<<endl;
  return 0;
}

二、reinterpret_cast

reinterpret_cast操作符通常為操作數(shù)的位模式提供較低層次的重新解釋,用于將一種類型轉(zhuǎn)換為另一種不同的類型

int main()
{
 double d = 12.34;
 int a = static_cast<int>(d);
 cout << a << endl;
 // 這里使用static_cast會(huì)報(bào)錯(cuò),應(yīng)該使用reinterpret_cast
 //int *p = static_cast<int*>(a);
 int *p = reinterpret_cast<int*>(a);
 return 0;
}

三、 const_cast

const_cast最常用的用途就是刪除變量的const屬性,方便賦值
【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast),c++,開發(fā)語言
但這里我們發(fā)現(xiàn)打印出來a的值沒有加一,這是因?yàn)榫幾g器對于const類型修飾的常變量默認(rèn)其值是不會(huì)被修改的,為了加快訪問效率,編譯器會(huì)把常變量的值放入寄存器,每次從寄存器中去讀取數(shù)據(jù),其實(shí)實(shí)際在內(nèi)存中對應(yīng)的值是變了的了。
【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast),c++,開發(fā)語言

四、 dynamic_cast

dynamic_cast用于將一個(gè)父類對象的指針/引用轉(zhuǎn)換為子類對象的指針或引用(動(dòng)態(tài)轉(zhuǎn)換)
向上轉(zhuǎn)型:子類對象指針/引用->父類指針/引用(不需要轉(zhuǎn)換,賦值兼容規(guī)則)
向下轉(zhuǎn)型:父類對象指針/引用->子類指針/引用(用dynamic_cast轉(zhuǎn)型是安全的)

注意:

  1. dynamic_cast只能用于父類含有虛函數(shù)的類
  2. dynamic_cast會(huì)先檢查是否能轉(zhuǎn)換成功,能成功則轉(zhuǎn)換,不能則返回0

【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast),c++,開發(fā)語言
【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast),c++,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-729877.html

到了這里,關(guān)于【C++】類型轉(zhuǎn)換(dynamic_cast,const_cast,static_cast,reinterpret_cast)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++】dynamic_cast基本用法(詳細(xì)講解)

    【C++】dynamic_cast基本用法(詳細(xì)講解)

    ??博__主??:米碼收割機(jī) ??技__能??:C++/Python語言 ??公眾號??:測試開發(fā)自動(dòng)化【獲取源碼+商業(yè)合作】 ??榮__譽(yù)??:阿里云博客專家博主、51CTO技術(shù)博主 ??專__注??:專注主流機(jī)器人、人工智能等相關(guān)領(lǐng)域的開發(fā)、測試技術(shù)。 dynamic_cast 是 C++ 中的一個(gè)類型轉(zhuǎn)換操作符

    2024年02月07日
    瀏覽(20)
  • static_cast與dynamic_cast到底是什么?

    寫這個(gè)隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉(zhuǎn)換時(shí)的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉(zhuǎn)子類、用 static_cast 子類轉(zhuǎn)父類、使用 dynamic_cast 父類轉(zhuǎn)子類、用 dynamic_cast 子類轉(zhuǎn)父類

    2024年04月24日
    瀏覽(24)
  • c++ 11 新特性 不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù)之reinterpret_cast

    c++ 11 新特性 不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù)之reinterpret_cast

    一.不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù) reinterpret_cast 介紹 reinterpret_cast 是C++中的一種類型轉(zhuǎn)換操作符,用于執(zhí)行低級別的位模式轉(zhuǎn)換。具體來說, reinterpret_cast 可以實(shí)現(xiàn)以下功能: 指針和整數(shù)之間的轉(zhuǎn)換 :這種轉(zhuǎn)換通常用于在指針中存儲額外信息,或者在特定平臺上進(jìn)行底層操作。

    2024年03月09日
    瀏覽(30)
  • c++ 之 dynamic_pointer_cast

    /* ?* dynamic_pointer_cast ?*/ ?? ?描述 (Description) ?? ??? ?它返回一個(gè)正確類型的sp副本,其存儲的指針從U *動(dòng)態(tài)地轉(zhuǎn)換為T *。 ?? ?聲明 (Declaration) ?? ??? ?以下是std :: dynamic_pointer_cast的聲明。 ?? ??? ?template class T, class U ?? ??? ?? shared_ptrT dynamic_pointer_cast (const shared_

    2024年02月15日
    瀏覽(10)
  • 【C++】類和對象④(類的默認(rèn)成員函數(shù):取地址及const取地址重載 | 再談構(gòu)造函數(shù):初始化列表,隱式類型轉(zhuǎn)換,缺省值)

    【C++】類和對象④(類的默認(rèn)成員函數(shù):取地址及const取地址重載 | 再談構(gòu)造函數(shù):初始化列表,隱式類型轉(zhuǎn)換,缺省值)

    ?? 個(gè)人主頁: Forcible Bug Maker ?? 專欄: C++ 目錄 前言 取地址及const取地址操作符重載 再談構(gòu)造函數(shù) 初始化列表 隱式類型轉(zhuǎn)換 explicit 成員變量缺省值 結(jié)語 本篇主要內(nèi)容:類的六個(gè)默認(rèn)成員函數(shù)中的 取地址 及 const取地址重載 , 構(gòu)造函數(shù) 初始化列表 , 隱式類型轉(zhuǎn)換

    2024年04月26日
    瀏覽(30)
  • (04)基礎(chǔ)強(qiáng)化:接口,類型轉(zhuǎn)換cast/convert,異常處理,傳參params/ref/out,判斷同一對象

    (04)基礎(chǔ)強(qiáng)化:接口,類型轉(zhuǎn)換cast/convert,異常處理,傳參params/ref/out,判斷同一對象

    ?? ? 1、New的截?cái)嗍侵甘裁矗??? ? ?? ??? ?new除了新開空間創(chuàng)建初始化對象外,還有一個(gè) 隱藏 父類同名方法的作用。 ?? ??? ? ?? ??? ?當(dāng)子類想要隱藏父類同名的方法時(shí)用new,用了new后父類同名方法將到此為止,后面 ?? ??? ?繼承的子類,將再也繼承不到父類的同

    2024年02月01日
    瀏覽(15)
  • C++語言深度解析--類型系統(tǒng)和類型安全--const和volatile

    目錄 1.1類型系統(tǒng)和類型安全 類型系統(tǒng) 類型安全 c++和c的差別 面試題 1.2const和volatile 面試題 1.1類型系統(tǒng)和類型安全 類型系統(tǒng) 類型系統(tǒng)是一門編程語言最核心也是最基礎(chǔ)的部分。一門計(jì)算機(jī)語言無論基于何種編程范式,都必須首先對類型系統(tǒng)做出明確的定義。 數(shù)據(jù)類型:一個(gè)

    2024年02月09日
    瀏覽(15)
  • 17. C++ static、const 和 static const 類型成員變量聲明以及初始化

    1. C++ static、const 和 static const 類型成員變量聲明以及初始化 const 定義的常量在超出其作用域之后其空間會(huì)被釋放; static 定義的靜態(tài)常量在函數(shù)執(zhí)行后不會(huì)釋放其存儲空間; 1.2 static static 表示的是靜態(tài)的 類的靜態(tài)成員函數(shù)、靜態(tài)成員變量是和類相關(guān)的,而不是和類的具體對

    2024年01月18日
    瀏覽(53)
  • C++筆記之如何給 `const char*` 類型變量賦值

    code review! 直接賦值一個(gè)字符串字面值(string literal):

    2024年02月04日
    瀏覽(22)
  • C++——類和對象3|日期類型|Cout運(yùn)算符重載|Cin運(yùn)算符重載|const成員|

    C++——類和對象3|日期類型|Cout運(yùn)算符重載|Cin運(yùn)算符重載|const成員|

    目錄 日期類型? Date.h? Date.cpp? Test.cpp? 實(shí)現(xiàn)Cout運(yùn)算符重載? 實(shí)現(xiàn)Cin運(yùn)算符重載? 根據(jù)日期算星期? 修改后完整代碼?? Date.h? Date.cpp? const成員 ?取地址及const取地址操作符重載 習(xí)題? 計(jì)算日期到天數(shù)轉(zhuǎn)換? ? ?一個(gè)類到底可以重載哪些運(yùn)算符,要看哪些運(yùn)算符對這個(gè)類型有

    2023年04月13日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包