上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 1. 要实现C++的每一个语言特性,不同的编译器可能采取不同的方法,其中某些特性(如标题所列)的实现可能会对对象的大小和其member functions的执行速度带来冲击. 2. 虚函数. 当通过对象指针或引用调用虚函数时,具体调用哪一个虚函数由指针或引用的动态类型决定,大部分编译器使用vtbls 阅读全文
posted @ 2015-09-26 12:59 Reasno 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 1. "理想的程序库应该小,快速,威力强大,富有弹性,有扩展性,直观,可广泛运用,有良好支持,使用时没有束缚,而且没有'臭虫'".但实际上这种程序库是不可能实现的:要针对速度和大小做优化,往往要牺牲移植性;要有丰富的机能,结果可能不够直观......一个程序库往往要权衡各方面得失,采取折中的方法来实 阅读全文
posted @ 2015-09-25 23:41 Reasno 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 1. 一般来说,重载了算数操作符(以下称"独身形式"),那么也就要重载复合赋值操作符(以下称"复合形式").要确保操作符的复合形式例如(operator+=)和独身形式(例如operator+)行为相一致,基于前者实现后者是一个好方法.例如: class Rational{ public: Rati 阅读全文
posted @ 2015-09-25 20:31 Reasno 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 1. 正如条款19和条款20所言,临时对象的构造和析构会增加程序的运行成本,因此有必要采取措施尽量避免临时对象的产生.条款20介绍了一种用于消除函数返回对象而产生临时对象的方法——RVO,但它并不能解决隐式类型转换所产生的临时对象成本问题.在某些情况下,可以考虑利用重载技术避免隐式类型转换. 2. 阅读全文
posted @ 2015-09-24 21:40 Reasno 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 1. 函数如果返回对象,就会产生临时对象(见条款19)的构造,析构等过程,考虑以下重载的operator*: class Rational{ public: int getNumerator(){return numerator;} int getDenomerator(){return denom 阅读全文
posted @ 2015-09-24 21:01 Reasno 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 1. 所谓的C++临时对象并不是程序员创建的用于存储临时值的对象,而是指编译器层面上的临时对象:这种临时对象不是由程序员创建,而是由编译器为了实现某些功能(例如函数返回,类型转换等)而创建. 由于临时对象不是由程序员创建,其生存期由编译器掌控,因而也就不允许程序员对其进行更改,将其绑定到non-co 阅读全文
posted @ 2015-09-23 22:11 Reasno 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 1. Over-eager evaluation("超急评估"):超前进度地做"要求以外"的更多工作,也就是在要求之前就把事情做下去.例如,以下class template用于表现数值数据的大型收集中心: template<class NumericalType> class DataCollect 阅读全文
posted @ 2015-09-23 21:14 Reasno 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 1. lazy evaluationg实际上是"拖延战术":延缓运算直到运算结果被需要为止.如果运算结果一直不被需要,运算也就不被执行,从而提高了效率.所谓的运算结果不被执行,有时指只有部分运算结果被需要,那么采用拖延战术,便可避免另一部分不被需要的运算,从而提高效率,以下是lazy evaluat 阅读全文
posted @ 2015-09-22 22:17 Reasno 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 1. 80-20法则:一个程序80%的资源用于20%的代码上(80%的执行时间华仔大约20%的代码身上,80%的内存被大约20%的代码使用,80%的磁盘访问动作由20%的代码执行,80%的维护力气花在20%的代码上面).80-20法则的重点不在于字面上的数字,而是强调"软件的整体性能几乎总是由其构成 阅读全文
posted @ 2015-09-22 20:37 Reasno 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 1. 为了支持运行期处理exception,编译器需要做大量的簿记工作:确认如果发生异常所需要析构的对象,记录每个try语句块对应的catch子句及其能够处理的exception类型等.编译器还需要在运行期做一些对比工作:在exception抛出时适当析构对象并找出正确的catch子句等.可见exc 阅读全文
posted @ 2015-09-22 19:45 Reasno 阅读(424) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页