c++中的explicit关键字用于防止“单参数的构造函数”被用于隐式的类型转换。 例如, class Stack { explicit Stack(int i_nSize); } ... void f() { // 此时如果Stack的声明中没有explicit,则会创建一个 // 大小为4的Stack并赋值给s,等同于Stack s = Stack(4); Stack s = 4; // 或者下面这种方式同样会发生自动类型转换 Stack s; s = 4; } 如果使用了explicit,则Stack s = 4; 这条语句将会出现编译错误。