explicit关键在C ++中是什么意思?
C++中的explicit关键字用于标记构造函数以不隐式转换类型。例如,如果您有Foo类-
class Foo { public: Foo(int n); //将n个字节分配给foo对象 Foo(const char *p); //用char * p初始化对象 };
现在,如果您尝试
Foo mystring = 'x';
char'x'被隐式转换为int,然后将调用Foo(int)构造函数。但这不是预期的。因此,为防止此类情况并使代码更不易出错,请将构造函数定义为显式-
例
class Foo { public: explicit Foo (int n); //分配n个字节 Foo(const char *p); //使用字符串p进行初始化 };