C++ explicit使用总结

参考文章 C++中的explicit关键字 C++关键字explict的详解和使用

在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能显示的方式进行类型转换。即可阻止不应该允许的经过转换构造函数进行的隐式转换发生

explicit使用注意事项:

  • explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换
  • 只能用于类内部的构造函数声明上
  • 作用于单个参数的构造函数

使用了explicit关键字修饰的构造函数,编译时就不会进行自动转换

在C++中,一个参数的构造函数(或者是除了第一个参数外,其余参数都有默认值的多参数构造函数),有两个作用:

  • 构造函数
  • 默认且隐含的类型转换操作符

隐式拷贝构造函数的调用主要发生在三个方面:

  • 一个对象作为函数参数,以值传递的方式传入函数体
  • 一个对象作为函数返回值,以值传递的方式从函数返回
  • 以AAA = XXX的方式创建对象AAA,XXX为=与AAA为同类型的对象

**一般都只有将单个参数的构造函数声明为explicit,复制构造函数不要声明为explicit