explicit 使用
C++ explicit使用总结
参考文章 C++中的explicit关键字 ,C++关键字explict的详解和使用
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能显示的方式进行类型转换。即可阻止不应该允许的经过转换构造函数进行的隐式转换发生
explicit使用注意事项:
- explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换
- 只能用于类内部的构造函数声明上
- 作用于单个参数的构造函数
使用了explicit关键字修饰的构造函数,编译时就不会进行自动转换
在C++中,一个参数的构造函数(或者是除了第一个参数外,其余参数都有默认值的多参数构造函数),有两个作用:
- 构造函数
- 默认且隐含的类型转换操作符
隐式拷贝构造函数的调用主要发生在三个方面:
- 一个对象作为函数参数,以值传递的方式传入函数体
- 一个对象作为函数返回值,以值传递的方式从函数返回
- 以AAA = XXX的方式创建对象AAA,XXX为=与AAA为同类型的对象
**一般都只有将单个参数的构造函数声明为explicit,复制构造函数不要声明为explicit