C++:explicit关键字

来自WHY42
imported>Soleverlee2015年11月7日 (六) 06:49的版本 (以“explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转...”为内容创建页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。

explicit使用注意事项:

  • explicit 关键字只能用于类内部的构造函数声明上。
  • explicit 关键字作用于单个参数的构造函数。
  • 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换
class String{
      explicit String(int n);
      String(const char *p);
};
String s1 = 'a';       //错误:不能做隐式char->String转换
String s2(10);         //可以:调用explicit String(int n);
String s3 = String(10);//可以:调用explicit String(int n);再调用默认的复制构造函数
String s4 = "Brian";   //可以:隐式转换调用String(const char *p);再调用默认的复制构造函数
String s5("Fawlty");   //可以:正常调用String(const char *p);