explicit的意图是指明一个函数的调用必须是显式的,副作用才是禁止隐式的类型转化。
一般用于防止单参数的构造函数的隐式转化。
举个例子:
有这样一段代码:
过程是这样的: 编译器知道传的值是int而函数需要的是A类型,但它也同时知道调用A的构造函数将int转换成一个合适的A,所以才有上面成功的调用.换句话说,编译器处理这个调用时的情形类似下面这样:
const A temp(2); // 从2产生一个临时A对象
Test(temp); // 调用函数
如果代码写成如下样子: