C++中explicit關鍵字的用法

C++中的explicit可以阻止在構造函數時發生的隱式轉換

class A
{
    public :
	    A(int num) : n(num) {}

    private:
	    int n;

};

class B
{
    public :
    	explicit B(int num) : n(num) {}

    private:
    	int n;

};
 
int main()
{
	A t1 = 233;        //正確,構造函數處發生了隱式轉換
	B t2(233);         //正確,構造函數沒有發生隱式轉換
	B t3 = 233;        //錯誤,構造函數處發生了不被允許的隱式轉換
		
	return 0;
}

注意!以上t1處發生的隱式轉換隻有當構造函數只有一個參數時才能發生!
 

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