在C++中,explicit
關鍵字用于修飾類的單參數構造函數,其作用是防止隱式轉換。用法如下:
class MyClass {
public:
explicit MyClass(int x) {
// 構造函數的實現
}
};
int main() {
MyClass obj1(5); // 正確,直接調用構造函數
MyClass obj2 = 10; // 錯誤,禁止隱式轉換
MyClass obj3 = MyClass(15); // 正確,顯式調用構造函數
return 0;
}
在上述代碼中,explicit
關鍵字修飾了MyClass
的構造函數,使得該構造函數不能被隱式調用。因此,將整型數值直接賦值給MyClass
類型的對象(如MyClass obj2 = 10;
)會導致編譯錯誤。但是,可以使用顯式調用的方式來創建對象(如MyClass obj3 = MyClass(15);
)。
使用explicit
關鍵字可以避免一些意外的隱式轉換,增加程序的可讀性和安全性。特別是在具有單個參數的構造函數中,explicit
關鍵字的使用可以防止編譯器進行隱式轉換。