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處發生的隱式轉換隻有當構造函數只有一個參數時才能發生!