關鍵字 explicit 在C++中的使用

在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關鍵字用於禁止類構造函數或類型轉換運算符中的隱式轉換,從而避免可能的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章