如果一个Student类提供了一个构造函数“Student::Student(string name)”,这个构造函数可用作自动的类型转换函数,例如“Student aStudent = liming”,C++可直接通过上述构造函数将一个string类型的变量转化为Student对象,这可能导致意外的类型转换,所以C++提供了explicit关键字,用于关闭这种自动特性
在上述构造函数前添加explicit关键字
explicit Student(string name);
Student aStudent = "liming"; // not valid if Student(string) is declared as explicit
参考资料:
C++ Prime Plus(第6版)中文版