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

Allen小笔记

有时会忘记努力...

 
 
 

日志

 
 

Effective C plus plus  

2009-11-30 18:29:32|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  1. 与C一样,C++也使用布尔表达式的短路求值法。
举个例子来说:
      if((p!==0)&&strlen(p)>10)
 当p==0的时候,则strlen()函数根本不会运行。
这里要说明的是千万不要重载 &&和 || 运算符,除非你自己知道在干什么。
eg,
  //when operator && is the member of function of expression1
  if(expression1 && expression2)
=> if(expression1.operator &&(expression2))
  在这种情况下,则不会对expression1和expression2进行有效性的验证。
//when operator && is the global function
=> if(operator &&(expression1,expression2)) 
  在这种情况下,也不会对expression1和expression2进行有效性的验证。
  也就是说,函数调用代替了短路法则。而且,C++标准委员会也没有定义是先计算expression1还是expression2。
  同样的情况,也发生在","表达式,逗号表达式是先计算左边,整个表达式的值等于右边。所以也不要妄图去重载“,”运算符。
2.使用C++,就应该抛弃C的一些方式。
   比如,不要这样写, 
   int i=A;
   double d_count=(double)i;
   而应该这么写:
   double d_count=static_cast(i);
   同样的也还有消除 const属性的, const_cast<>;
   动态类型绑定的, dynamic_cast<>
   还有reinterpret_cast<>

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

历史上的今天

评论

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

页脚

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