C++ explicit关键字的作用主要是用来修饰类的构造函数,表明该构造函数是显式的,禁止单参数构造函数的隐式转换。
因为在C++类的构造函数只有一个参数的时候,在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,
实际上等同于:
ExampleClass tem(10);
将类的构造函数为显示的:
因为在C++类的构造函数只有一个参数的时候,在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,
比如:
class ExampleClass
{
public:
ExampleClass(int num);
};
ExampleClass obj = 10; 它将会把10隐士转换为ExampleClass 对象
实际上等同于:
ExampleClass tem(10);
ExampleClass obj = tem;
如果要避免这种自动转换的功能,可以在声明构造函数的时候前面添加上explict关键字,将类的构造函数声明为“显示”,这样就可以禁止这种自动的转换操作。将类的构造函数为显示的:
class ExampleClass
{
public:
explicit ExampleClass(int num);
};