c++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。
题外:转换构造函数一般由系统自动调用(当然代码里自己调用完全没问题),这点很利于编程。
例如:Complex t=5.0;//或Complex t(5.0);或Complex t=Complex(5.0);或Complex t=(Complex)5.0;
这时系统就自动调用了 Complex(double x)将 5.0转换成Complex类,再赋值给 t 。
example:
class T
{
public:
T(int i)
{
num = i;
}
private:
int num;
};
class B
{
public:
explicit B(int i)
{
num = i;
}
private:
int num;
};
int main()
{
T t = 12;
//B b = 12;//不能隐身调用其构造函数
B b(12);
return 0;
}