在C++中,explicit
關鍵字用於防止類構造函數或類型轉換運算符中的隱式類型轉換。爲了說明explicit
關鍵字的使用,讓我們看一個簡單的例子:
假設你有一個名爲Box
的類,它接受一個整數參數來設置其容量:
class Box {
public:
Box(int capacity) : m_capacity(capacity) {}
private:
int m_capacity;
};
現在,如果不使用explicit
關鍵字,你可以這樣創建一個Box
對象:
Box my_box = 5; // 隱式地將整數5轉換爲Box對象
但是,這可能會導致不易察覺的錯誤。爲了避免此類隱式轉換,可以在構造函數前添加explicit
關鍵字:
class Box {
public:
explicit Box(int capacity) : m_capacity(capacity) {}
private:
int m_capacity;
};
現在,使用隱式轉換將產生編譯錯誤,只能顯式地創建Box
對象:
Box my_box = 5; // 編譯錯誤:不能隱式地從'int'轉換爲'Box'
Box my_box(5); // 正確:顯式地創建Box對象
Box my_box = Box(5); // 正確:顯式地創建Box對象
總之,explicit
關鍵字用於禁止類構造函數或類型轉換運算符中的隱式轉換,從而避免可能的錯誤。