explicit 关键字作用
时间: 2023-08-11 08:00:38 浏览: 87
C++ Explicit关键字详细解析
5星 · 资源好评率100%
C++中的`explicit`关键字用于修饰单参数构造函数,它的作用是防止隐式类型转换。当一个构造函数被声明为`explicit`时,它将只能被显式调用,而不能通过隐式的类型转换来调用。
这意味着如果一个构造函数被标记为`explicit`,那么在使用该构造函数进行对象初始化时,必须使用显式的类型转换。这可以防止一些意外的隐式转换,从而提高代码的可读性和安全性。
下面是一个示例:
```cpp
class MyClass {
public:
explicit MyClass(int value) {
// 构造函数的实现
}
};
void func(MyClass obj) {
// 函数的实现
}
int main() {
MyClass obj1(42); // 正确,显式调用构造函数
MyClass obj2 = 42; // 错误,隐式转换被禁止
func(42); // 错误,隐式转换被禁止
return 0;
}
```
在上面的示例中,`MyClass`类有一个使用`explicit`关键字修饰的构造函数,因此在使用该构造函数进行对象初始化时必须使用显式的类型转换。如果尝试使用隐式转换,编译器将会报错。
阅读全文