2011年7月19日
摘要: 作者:唐风出处:http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。在上篇里,我们看到了 (N)RVO 和右值引用,下面我们来看看表达式模板。Expression Template(表达式模板,ET)如果有“系统地”学习过 C++ 的模板编程,那么你应该已经知道 Expression Template 这个“东西”。在模板圣经《C++ templates》的第 18 章专门用了一整章来讲这个技巧,(是的,我认为它是一种技巧)。足以见得它比较复杂,也很重要。说起 Expr 阅读全文
posted @ 2011-07-19 10:47 盗艹人 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 作者:唐风出处:http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。C++ 是一门以效率见长的语言(虽然近来越来越多的人“不齿”谈及效率,我深以为不然,在某一次的程序编写中不对效率锱铢必较并不意味意味着我们就不应该追求更多的更好的做法)。总之吧,相比起其它语言,程序员们在使 C++ 的时候会更加有意识地去避免没有效率的做法。在C++ 的程序中,临时对象的产生就是损及效率的“恶因”之一,因此也产生出一些意思的技术和优化手段,这篇文章里我总结一下最近在这些方面学习的一些收获 阅读全文
posted @ 2011-07-19 10:45 盗艹人 阅读(727) 评论(0) 推荐(0) 编辑
摘要: C++中真正的临时对象是看不见的,它们不出现在你的源代码中,临时对象的产生在如下几个时刻:1.用构造函数作为隐式类型转换函数时,会创建临时对象。例:class Integer{public:Integer(int i):m_val(i){}~Integer(){}private:intm_val;};void Calculate(Integer itgr){// do something}那么语句:inti = 10;Calculate(i);会产生一个临时对象,作为实参传递到Calculate函数中。2.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象。如:I 阅读全文
posted @ 2011-07-19 10:14 盗艹人 阅读(11844) 评论(3) 推荐(4) 编辑