在C++中,explicit
关键字用于防止类构造函数、转换运算符或其他函数的隐式自动转换。使用explicit
可以提高代码的可读性和健壮性,避免意外的类型转换导致的错误。以下是关于explicit
关键字的详细介绍和示例。
1. 防止构造函数的隐式转换
在C++中,单参数的构造函数默认可以作为转换构造函数,用于隐式转换类型。使用explicit
关键字可以防止这种隐式转换。
示例代码
class Widget {
public:
explicit Widget(int size) {
// 构造函数实现
}
};
void doSomething(Widget w) {
// 函数实现
}
// 示例使用
Widget w(10); // 直接初始化是允许的
// doSomething(10); // 错误:不能隐式转换int到Widget
doSomething(Widget(10)); // 正确:显式转换
在这个例子中,Widget
的构造函数被标记为