explicit关键字
explicit的作用
在C++中explicit用来修饰类的构造函数,用于禁止隐式类型转换(只能显式调用构造函数)和禁止复制初始化(只能直接使用初始化)。
explicit使用的注意事项
explicit只能用于类内部的构造函数声明上。explicit关键字作用于单个参数的构造函数。
禁止隐式类型转换的示例
未加explicit时的隐式类型转换:
1 | |
上面示例中的Point类定义了一个使用默认参数的构造函数,因此主函数中两行代码均会触发该构造函数的隐式调用(如果构造函数不使用默认参数,会在编译时报错)。
然而,displayPoint需要的是Point类型的参数,而传入的是一个int,隐式调用导致该程序能够运行成功。explicit关键字就是用来处理这样的情况,避免意外发生。
加上explicit的示例:
1 | |
加上explicit后,displayPoint函数中就被禁止进行隐式转换,必须传入Point类型的实参。
禁止复制初始化示例
1 | |
explicit关键字
https://delta0406.github.io/2025/09/24/技术/语言/CPP/explicit关键字/