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处发生的隐式转换只有当构造函数只有一个参数时才能发生!
 

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