C++中的關鍵字 explicit
這樣看起來好象很酷, 很方便。 但在某些情況下(見下面權威的例子), 卻違背了我們(程序員)的本意。 這時候就要在這個構造器前面加上explicit修飾, 指定這個構造器只能被明確的調用,使用, 不能作爲類型轉換操作符被隱含的使用。 呵呵,
看來還是光明正大些比較好。
explicit構造函數的作用
解析:
explicit構造函數是用來防止隱式轉換的。請看下面的代碼:
class Test1
{
public:
Test1(int n) { num = n; } //普通構造函數
private:
int num;
};
class Test2
{
public:
explicit Test2(int n) { num = n; } //explicit(顯式)構造函數
private:
int num;
};
int main()
{
Test2 t2 = 12; //編譯錯誤,不能隱式調用其構造函數
Test2 t3(12); //顯式調用成功
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.