explicit關鍵字的運用

2021-07-11 07:07:18 字數 541 閱讀 8669

在c++提供了關鍵字explicit,可以阻止不被允許的經過建構函式進行的隱式轉換的發生。

c++中,乙個引數的建構函式,承擔兩個角色。1.是構造器 2.是預設且隱含的型別轉換操作。所以當我們定義出 int aaa; 而當恰好將***賦給類時,且***的型別也是int。那編譯器就會自動呼叫這個構造器,建立乙個aaa的物件。

在程式中隱式轉換為程式設計師提供了一些便利,但也產生了一些「深度bug」,如以下程式:

class texta

//建構函式。

private:

int num;

}class textb

private:

int num;

}int main()

由於texta的建構函式帶乙個int型的引數,所以texta t1 = 1;會隱式轉換成呼叫texta的這個建構函式。

但是由於關鍵字explicit的宣告,textb t2 = 1; 不會隱式轉換,只能夠這樣textb t2(1);顯示的呼叫。

關於explicit關鍵字

今天在看乙個源程式的時候用到了explicit關鍵字。在網上查詢了一下該關鍵字的作用。沒有進行試驗,只是整理了下 1.explicit主要和建構函式一起使用.2.當explicit修飾建構函式的時候,對於呼叫該建構函式進行進行 隱式 轉換的 將不會通過 3.解除explicit的方式,就是使用強制轉...

explicit(顯示)關鍵字

explicit 使用 struct a operator bool const struct b explicit operator bool const void doa a a void dob b b intmain ok 直接列表初始化 a a4 ok 複製列表初始化 a a5 a 1 o...

C 的explicit關鍵字

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