在我们的c++中,有些东西是默认支持的,比如隐士转换和默认的拷贝构造函数(浅层拷贝).
介绍下隐式转化:
class Age {
public:
Age(int a){
cout << "My age is :" << a << endl;
}
};
在main函数中,我们可以这么写:
//隐藏转换
Age a1(10);
Age a2 = 12; //等价于 Age a2(12);
注意隐式转化仅仅适用于构造函数为单个参数的情况下。
如果我们要禁止隐式转化,那么我们就可以使用关键字:explicit来帮助我们了.
class Age {
public:
explicit Age(int a){
cout << "My age is :" << a << endl;
}
};
添加关键字explicit后
Age a1(10); //合法
Age a2 = 12; //不合法,不再支持隐式转换,编译期间不会通过