1. 程式人生 > >【C++】explicit 關鍵字

【C++】explicit 關鍵字

文章複製連結:
https://baike.baidu.com/item/explicit/4941869?fr=aladdin

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()
{
    Test1 t1=12;//隱式呼叫其建構函式,成功
    Test2 t2=12;//編譯錯誤,不能隱式呼叫其建構函式
    Test2 t2(12);//顯式呼叫成功
    return 0;
}

Test1的建構函式帶一個int型的引數,程式碼23行會隱式轉換成呼叫Test1的這個建構函式。而Test2的建構函式被宣告為explicit(顯式),這表示不能通過隱式轉換來呼叫這個建構函式,因此程式碼24行會出現編譯錯誤。
普通建構函式能夠被隱式呼叫。而explicit建構函式只能被顯式呼叫。