C 中explicit關鍵字的作用

2021-08-02 11:18:09 字數 660 閱讀 8936

在c++中,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式型別轉換,只能以顯示的方式進行型別轉換。explicit 關鍵字只能用於類內部的建構函式宣告上作用於單個引數的建構函式;,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式型別轉換。

class things

int compareto(const things & other);

std::string m_name;

int height;

int weight; };

這段**中things的建構函式可以只用乙個實參完成初始化,故可以進行乙個隱式轉換,

things a;

................//在這裡被初始化並使用。

std::string nm ="book_1";

//由於可以隱式轉換,所以可以下面這樣使用

int result = a.compareto(nm);

這段程式使用乙個string型別物件作為實參傳給things的compareto函式。這個函式本來是需要乙個tings物件作為實參。現在編譯器使用string nm來構造並初始化乙個

things物件,新生成的臨時的things物件被傳遞給compareto函式,並在離開這段函式後被析構。

c 中explicit關鍵字

c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的。既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 include using namesp...

c 中的explicit關鍵字

c 中的explicit關鍵字 c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下...

c 中的explicit關鍵字

c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 class myclas...