c++ explicit的作用及用法是甚么
在C++中,explicit
关键字用于修饰类的单参数构造函数,其作用是避免隐式转换。用法以下:
class MyClass {
public:
explicit MyClass(int x) {
// 构造函数的实现
}
};
int main() {
MyClass obj1(5); // 正确,直接调用构造函数
MyClass obj2 = 10; // 毛病,制止隐式转换
MyClass obj3 = MyClass(15); // 正确,显式调用构造函数
return 0;
}
在上述代码中,explicit
关键字修饰了MyClass
的构造函数,使得该构造函数不能被隐式调用。因此,将整型数值直接赋值给MyClass
类型的对象(如MyClass obj2 = 10;
)会致使编译毛病。但是,可使用显式调用的方式来创建对象(如MyClass obj3 = MyClass(15);
)。
使用explicit
关键字可以免一些意外的隐式转换,增加程序的可读性和安全性。特别是在具有单个参数的构造函数中,explicit
关键字的使用可以避免编译器进行隐式转换。
TOP