explicit关键字
最近刷题过程中遇到了关于explicit关键字方面的知识,隐式转换有时候会有程序逻辑的问题,还是值得学习下
explicit关键字是阻止转换构造函数进行隐式转换的发生
当构造函数前没有explicit关键字修饰单参数的构造函数可以做到隐式转换,在上边a2对象的构造过程中只调用构造函数
可以看出当构造函数加上explicit关键字后,编译器就会报错,这里无法将整型对象1转换为AA类型的对象
当构造函数为多个参数时,这样的编译也是无法通过的
explic关键字只能用于类内部饿构造函数声明上,而不能用在类外部的函数定义上。
effective c++中说:被声明为explicit的构造函数通常比其non_explicit兄弟更受欢迎。因为他们禁止编译器执行非预期(往往也不被预期)的类型转换。除非我有一个好理由允许构造函数被用于隐式类型转换,否则我会把他声明为explicit。我鼓励你遵循相同的政策。