explicit
在C++中,explicit關鍵字用來修飾類的構造函數,被修飾的構造函數的類,不能發生相應的隱式類型轉換,只能以顯示的方式進行類型轉換。因為無參構造函數和多參構造函數本身就是顯示調用的。再加上explicit關鍵字也沒有什么意義。
explicit使用注意事項:
explicit 關鍵字只能用于類內部的構造函數聲明上
explicit 關鍵字作用于單個參數的構造函數。
在C++中,explicit關鍵字用來修飾類的構造函數,被修飾的構造函數的類,不能發生相應的隱式類型轉換
禁止類對象之間的隱式轉換
?
#include <iostream>
using namespace std;class Test1
{
public :Test1(int num):n(num){}
private:int n;
};class Test2
{
public :explicit Test2(int num):n(num){}
private:int n;
};int main()
{Test1 t1 = 12;Test2 t2(13);Test2 t3 = 14;return 0;
}
編譯時,會指出?t3那一行error:無法從“int”轉換為“Test2”。而t1卻編譯通過。注釋掉t3那行,調試時,t1已被賦值成功。
注意:當類的聲明和定義分別在兩個文件中時,explicit只能寫在在聲明中,不能寫在定義中。