欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)整理

 更新時(shí)間:2020年02月25日 09:35:22   作者:honpey  
在本篇文章里小編給大家整理的是關(guān)于《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)筆記內(nèi)容,需要的朋友們參考下。

C++ Primer中有這樣一句話:可以用單個(gè)實(shí)參來調(diào)用的構(gòu)造函數(shù)定義了從形參類型到該類類型的一個(gè)轉(zhuǎn)換。這句話用下面一段代碼表示為:

class A
{
  A(B b);//單個(gè)實(shí)參的構(gòu)造函數(shù)
  func(A a);
} 
.....
A a;
B b;
a.func(b);//func函數(shù)本應(yīng)該接受A類型的實(shí)參,但是由于特殊構(gòu)造函數(shù)的存在,所以B類型的參數(shù)b借助這個(gè)特殊的構(gòu)造函數(shù)轉(zhuǎn)化為A類型對(duì)象,完成轉(zhuǎn)換。所以這條語(yǔ)句是正確的

從上述代碼段可以看出來,單個(gè)實(shí)參調(diào)用的構(gòu)造函數(shù)定義了類類型到其他類型的轉(zhuǎn)換,并且這種轉(zhuǎn)換是隱式發(fā)生的,這里有幾個(gè)關(guān)鍵字:?jiǎn)蝹€(gè)實(shí)參,構(gòu)造函數(shù),隱式轉(zhuǎn)換。

隱式轉(zhuǎn)換的過程發(fā)生了什么?對(duì)象a并沒有參數(shù)類型為B的成員函數(shù),但是它有一個(gè)單一B類形參的構(gòu)造函數(shù),所以編譯時(shí)是不會(huì)報(bào)錯(cuò)的。對(duì)于a.func(b)這條語(yǔ)句,編譯器會(huì)用這個(gè)特殊的構(gòu)造函數(shù),生成一個(gè)臨時(shí)對(duì)象,然后以臨時(shí)對(duì)象調(diào)用正規(guī)的 func(A a)函數(shù),func(A a)函數(shù)結(jié)束,臨時(shí)對(duì)象被注銷。

這種轉(zhuǎn)換到底好不好?因類而異,因使用的語(yǔ)境而異!你總有需要它的時(shí)候,也有不許要它的時(shí)候,語(yǔ)言默認(rèn)是有這項(xiàng)功能的。但是,也可以通過關(guān)鍵字explicit阻止這種我們看不到的“優(yōu)化”!explicit關(guān)鍵字只能用在構(gòu)造函數(shù)身上,并且只需在函數(shù)的聲明時(shí)標(biāo)注即可,在類函數(shù)的定義時(shí)不需標(biāo)注該關(guān)鍵字。

上例中如果阻止借助構(gòu)造函數(shù)A(B b)發(fā)生隱式類型轉(zhuǎn)換,可對(duì)該構(gòu)造函數(shù)的聲明做如下處理:

explicit A (B b)

此時(shí)語(yǔ)句a.func(b)就要出錯(cuò)了,但是我們可以顯式地使用構(gòu)造函數(shù),以上例為例,可以使用語(yǔ)句

a.func(A(b))

完成相同的功能,此時(shí)不涉及隱式轉(zhuǎn)換。A(b)生成臨時(shí)A類型對(duì)象,并且傳遞給函數(shù)func調(diào)用,一切循規(guī)蹈矩,沒有任何隱式的、程序員看不見的步驟。顯示的構(gòu)造函數(shù)中止了隱式地使用構(gòu)造函數(shù),任何構(gòu)造函數(shù)都可以顯式地創(chuàng)建臨時(shí)對(duì)象,這是它的權(quán)利,被explicit修飾的構(gòu)造函數(shù)也不例外。

對(duì)于隱式類類型轉(zhuǎn)換,《C++ Primer》作者有如下心得:通常,除非有明顯理由要定義隱式轉(zhuǎn)換,否則,單形參構(gòu)造函數(shù)應(yīng)該為explicit。將構(gòu)造函數(shù)設(shè)置為explicit可以避免錯(cuò)誤,并且當(dāng)轉(zhuǎn)換有用時(shí),用戶可以顯式地構(gòu)造對(duì)象。

到此這篇關(guān)于《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)整理的文章就介紹到這了,更多相關(guān)c++隱式類類型轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法

    C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)模板中的非類型參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • OpenCV圖像處理之直方圖比較方法詳解

    OpenCV圖像處理之直方圖比較方法詳解

    直方圖比較是對(duì)輸入的兩張圖像進(jìn)行計(jì)算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過計(jì)算H1與H2的之間的距離得到兩個(gè)直方圖的相似程度,進(jìn)而比較圖像本身的相似程度。本文將為大家詳細(xì)講講直方圖比較的實(shí)現(xiàn)方法,需要的可以參考一下
    2022-09-09
  • C++中int類型按字節(jié)打印輸出的方法

    C++中int類型按字節(jié)打印輸出的方法

    這篇文章主要給大家介紹了關(guān)于C++中int類型按字節(jié)打印輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C++ vector類的模擬實(shí)現(xiàn)方法

    C++ vector類的模擬實(shí)現(xiàn)方法

    這篇文章主要介紹了C++ vector類的模擬實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C語(yǔ)言數(shù)組元素循環(huán)右移問題及解決方法

    C語(yǔ)言數(shù)組元素循環(huán)右移問題及解決方法

    這篇文章主要介紹了C語(yǔ)言數(shù)組元素循環(huán)右移問題,本文通過多種方法給大家分享解決方案,通過實(shí)例代碼講解,對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解

    C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解

    這篇文章主要為大家介紹了C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 使用C語(yǔ)言中的time函數(shù)獲取系統(tǒng)時(shí)間

    使用C語(yǔ)言中的time函數(shù)獲取系統(tǒng)時(shí)間

    在C語(yǔ)言中可以使用time函數(shù)來獲取系統(tǒng)時(shí)間,以下對(duì)time函數(shù)進(jìn)行了介紹,需要的朋友可以過來參考下
    2013-07-07
  • C語(yǔ)言三子棋的實(shí)現(xiàn)思路到過程詳解

    C語(yǔ)言三子棋的實(shí)現(xiàn)思路到過程詳解

    所謂三子棋,就是三行三列的棋盤,玩家可以和電腦下棋,率先連成三個(gè)的獲勝。這篇文章主要為大家詳細(xì)介紹了如何通過C語(yǔ)言實(shí)現(xiàn)三子棋小游戲,感興趣的小伙伴可以嘗試一下
    2023-02-02
  • C語(yǔ)言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    C語(yǔ)言模擬內(nèi)存函數(shù)分析之mencpy與memmove

    這篇文章主要介紹了C語(yǔ)言詳解如何模擬內(nèi)存函數(shù),用到了mencpy與memmove兩個(gè)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • C++ Boost PropertyTree解析INI文件詳解

    C++ Boost PropertyTree解析INI文件詳解

    Boost PropertyTree庫(kù)不僅可以解析JSON,XML格式,還可以直接解析INI格式文件。這篇文章就是為大家介紹一下如何通過Boost PropertyTree解析INI文件,需要的可以參考一下
    2022-01-01

最新評(píng)論