注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hhfighting的博客

以责人之心责己,以恕己之心恕人

 
 
 

日志

 
 
 
 

C++中的explicit  

2010-05-08 20:36:48|  分类: 专业知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

含义:explicit主要用于修饰构造函数,是显示转换的意思。被声明为explicit的构造函数就不能支持隐式转换了。

下面用例子具体介绍此含义。

 class Test1

 {

  public:

           Test1(int n) { num = n; } //普通构造函数

  private:

            int num;

  };

 class Test2

 {

  public:

            explicit Test2(int n) { num = n; } //explicit(显式)构造函数

  private:

             int num;

 }; 

 int main()

 {

       Test1 t1 = 12; //隐式调用其构造函数, 成功

       Test2 t2 = 12; //编译错误,不能隐式调用其构造函数

       Test2 t3(12); //显示调用成功

        return 0;

 }

Test1的构造函数带一个int型的参数,代码Test1 t1 = 12编译器会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码Test2 t2 = 12会出现编译错误。

普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。

  评论这张
 
阅读(222)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018