介绍
在C++中,explicit
是一个关键字,用于修饰类的构造函数或转换函数。它的作用是禁止隐式类型转换,只允许显式调用。
隐式类型转换的一个直观的例子:
1 | 可以使用std::string s = "c++" 代替 std::string s("c++") |
使用C++ explicit关键字举例
1 | class MyClass { |
Effective C++中写道:
声明为explicit
的构造函数禁止编译器执行非预期的类型转换
总结
构造函数只具有一个参数时,通常使用explicit 关键字
构造函数具有一个非缺省参数和多个缺省参数,通常使用explicit 关键字
构造函数具有一个以上的非缺省参数时不使用 explicit 关键字