c 學習2 explicit用法

2021-06-29 16:15:03 字數 374 閱讀 5929

1.只能修飾類的內部建構函式

class a

;//正確

private:

int m ;

};explicit a::a(int i)//錯誤

void fun(a temp)

2.阻止隱式轉換

原因:在c++中某個類的建構函式只有乙個引數,假設型別為a,那麼可以進行a到該類的物件的隱式轉換,比如下面的類a的建構函式只有乙個引數,型別為int,那麼就可以直接將乙個int轉換為a類的物件

如果不用該修飾符 

a temp=10;//正確

fun(10)

否則只能顯示呼叫乙個形參的建構函式

a temp(10);

fun(temp);

C 中 explicit的用法

explicit 是避免建構函式的引數自動轉換為類物件的識別符號 cpp view plain copy include using namespace std class a intmain 上面的 編譯不成功,原因是當顯式地定義了乙個帶乙個引數的建構函式 帶explicit 必須要顯示地呼叫建構...

C 中 explicit的用法

explicit 是避免建構函式的引數自動轉換為類物件的識別符號 cpp view plain copy include using namespace std class a intmain 上面的 編譯不成功,原因是當顯式地定義了乙個帶乙個引數的建構函式 帶explicit 必須要顯示地呼叫建構...

C 中explicit的用法

c 提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生,宣告為explicit的建構函式不能在隱式轉換中使用。c 中,乙個引數的建構函式 或者除了第乙個引數外其餘引數都有預設值的多參建構函式 承擔了兩個角色。1 是個構造 2 是個預設且隱含的型別轉換操作符。所以,...