码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 中的explicit关键字

时间:2017-07-10 17:57:34      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:不能   cto   好的   har   自动   string   编译   char*   nbsp   

explicit关键字在c++中是为了防止隐式转换

(1)

explicit

此关键字只能对用户自己定义的对象起作用,不对默认构造函数起作用
此关键字只能够修饰构造函数。而且构造函数的参数只能有一个。。

(2)何时用explicit

当我们不希望自动类型转换的时候用,其实标准库好多构造函数都是explicit的

比如说vector <int> ivec(10);  //这种定义看起来一目了然

不能写成vector <int> ivec=10;//此种定义让程序员感到疑惑

(3)何时不用explicit

当我们需要隐式转换的时候

比如说String类的一个构造函数

String(const char*);

 

定义成这样的好处,在需要隐式转化的时候编译器会自动地帮我们转换,标准库里面的String就是一个好的证明。

具体来说:

 

我们可以这样String str="helloworld";//直接调用构造函数

 

String str="hello"+str+"world";

 

调用重载的+操作符号,此过程相当于:
String temp("hello"); //调用构造函数

String str=temp+str;

String t("world");//调用构造函数

String str=str+t;

 

 

明白隐式转换在我们自己写类的时候,尤其是些操纵内存的类的时候很有用。

C++ 中的explicit关键字

标签:不能   cto   好的   har   自动   string   编译   char*   nbsp   

原文地址:http://www.cnblogs.com/zhaodun/p/7146578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!