如果一个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版)中文版
C++中的explicit关键字用于防止隐式类型转换,比如在Student类中,如果有一个接受string的构造函数,不使用explicit会导致像`Student aStudent = liming;`这样的隐式转换。这可能会引发意外行为。通过在构造函数前添加explicit,可以确保只有显式转换是允许的,提高代码的清晰性和安全性。
2820

被折叠的 条评论
为什么被折叠?



