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进行初始化
};