通过在类构造函数前加上explicit关键字可以避免类构造函数的意外调用。explicit关键字告诉编译器只允许显式调用构造函数,不允许隐式调用构造函数。
例如:
class MyClass {
public:
explicit MyClass(int value) : mValue(value) {}
private:
int mValue;
};
void func(MyClass obj) {
// do something
}
int main() {
// MyClass obj = 10; // 错误,不能隐式调用构造函数
MyClass obj(10); // 正确,可以显式调用构造函数
func(obj);
return 0;
}
在上面的例子中,构造函数MyClass(int value)
前加上了explicit关键字,因此不能隐式调用该构造函数。如果尝试使用隐式调用构造函数的方式创建MyClass对象会导致编译错误。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:explicit关键字在c++构造函数中的重要性是什么