溫馨提示×

explicit關鍵字在c++模板編程中有何作用

c++
小樊
84
2024-08-17 23:58:37
欄目: 編程語言

在C++模板編程中,explicit關鍵字用于控制模板類中的構造函數(shù)是否可以被隱式轉換調用。通常情況下,當一個類有一個參數(shù)的構造函數(shù)時,該構造函數(shù)可以被隱式調用,這可能會導致一些意想不到的行為。使用explicit關鍵字可以禁止這種隱式調用,只允許顯式調用構造函數(shù)。

例如,如果一個類有一個參數(shù)的構造函數(shù),并且使用了explicit關鍵字,那么只能用顯式的方式調用該構造函數(shù)。這樣可以避免一些潛在的問題,提高代碼的可讀性和安全性。

template <typename T>
class MyClass {
public:
    explicit MyClass(T val) : value(val) {}

private:
    T value;
};

int main() {
    MyClass<int> obj1 = 10; // 編譯錯誤,禁止隱式調用構造函數(shù)
    MyClass<int> obj2(20); // 正確,顯式調用構造函數(shù)
}

0