当类构造函数只有一个参数或除了第一个参数外其余参数都有默认值时,则此类有隐含的类型转换操作符(隐式转换),但有时隐式转换并不是我们想要的,可在构造函数前加上关键字explicit,来指定显式调用。
void fun(CTest test);
class CTest
{
public:
explicit CTest(int m = 0);
}
fun(20);//error 隐式转换
fun(static_cast<CTest>(20)); //ok 显式转换
来源:https://blog.csdn.net/weixin_37597675/article/details/102772432