第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

顯式關(guān)鍵字意味著什么?

顯式關(guān)鍵字意味著什么?

C++ C
慕后森 2019-06-01 15:17:51
顯式關(guān)鍵字意味著什么?是什么explicit關(guān)鍵字在C+中的意思?
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

假設(shè),你有一個類String:

class String {public:
    String(int n); // allocate n bytes to the String object
    String(const char *p); // initializes object with char *p};

現(xiàn)在,如果你嘗試:

String mystring = 'x';

人物'x'將被隱式轉(zhuǎn)換為int然后String(int)構(gòu)造函數(shù)將被調(diào)用。但是,這并不是用戶所期望的。因此,為了防止出現(xiàn)這種情況,我們將構(gòu)造函數(shù)定義為explicit:

class String {public:
    explicit String (int n); //allocate n bytes
    String(const char *p); // initialize sobject with string p};


查看完整回答
反對 回復(fù) 2019-06-01
?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

在C+中,只有一個所需參數(shù)的構(gòu)造函數(shù)被視為隱式轉(zhuǎn)換函數(shù)。它將參數(shù)類型轉(zhuǎn)換為類型。這是否是一件好事取決于構(gòu)造函數(shù)的語義。

例如,如果您有一個帶有構(gòu)造函數(shù)的字符串類String(const char* s)這可能正是你想要的。你可以通過一個const char*函數(shù)的String,編譯器將自動構(gòu)造一個臨時的String對象為您。

另一方面,如果有一個緩沖區(qū)類的構(gòu)造函數(shù)Buffer(int size)獲取緩沖區(qū)的大小(以字節(jié)為單位),您可能不希望編譯器悄悄地轉(zhuǎn)動intBufferS.若要防止這種情況,請使用explicit關(guān)鍵詞:

class Buffer { explicit Buffer(int size); ... }

那樣的話,

void useBuffer(Buffer& buf);useBuffer(4);

變成編譯時錯誤。如果你想通過一個臨時的Buffer對象時,必須顯式地這樣做:

useBuffer(Buffer(4));

總之,如果單參數(shù)構(gòu)造函數(shù)將參數(shù)轉(zhuǎn)換為類的對象,則可能不希望使用explicit關(guān)鍵詞。但是,如果有一個構(gòu)造函數(shù)恰好接受單個參數(shù),則應(yīng)該將其聲明為explicit若要防止編譯器意外轉(zhuǎn)換,請執(zhí)行以下操作。


查看完整回答
反對 回復(fù) 2019-06-01
  • 3 回答
  • 0 關(guān)注
  • 603 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號