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 是個預設且隱含的型別轉換操作符。所以,...