explicit关键字
主要是用于类的构造函数,在构造类的实例时,编译器会进行隐式替换,例如,通常,当一个构造函数只接受一个参数时,该构造函数可以用来执行隐式类型转换。然而,这种隐式转换有时可能导致一些意外的行为,为了防止这种情况发生,可以使用 explicit 关键字。下面的代码obj就使用了隐式类型替换。
class MyClass {
public:
// 隐式构造函数
MyClass(int x) {
data = x;
}
int getData() const {
return data;
}
private:
int data;
};
int main() {
// 隐式调用构造函数,将整数隐式转换为 MyClass 对象
MyClass obj = 42;
// 显式调用构造函数
MyClass objExplicit = MyClass(42);
return 0;
}