笔记范围:2.4节
在上一节中作者带着我们初步建立一个class。正如作者自己所说:它能满足一些用户的需要,但是我们都知道我们的世界是多元的。当然需求也就会分不同的层次,但是生产的各类资源都极其有限,因此对工作效率的追求就成了我们这个时代技术发展的主要目标。
对于编程工作来说。效率主要来自代码的重用性。因为计算机硬件技术的发展成果,可以让程序员合理的忽视一些代码执行效率的考虑(并非完全忽视)。对于代码的重用性,根据作者的描述,我想把他理解为两个方面的努力,以方法(函数)的调用来划分。
在调用者这一端。我们希望写下的一句代码,由计算机自己决定其代码的具体实现方法。正如书上所写的,当我们写下:
int x = max( a, b );
我们希望计算机自己根据a,b的数据类型来决定具体该调用那个max()实例。在就是重载。(其实这是上节的内容。但我自己觉得把它放到这里来总结更有利理解其作用和本质)
而在被调用的一端。我们一方面希望自己的代码能被不同的程序调用,另一方面我们也希望自己代码能根据被调用端的具体情况做出相应的反应,这两个方面都造就了伟大的技术。前者导致了oo理论的诞生,后者引出了泛型设计思想。
终于看到了oo,呵呵。在高兴之余,发现oo并没有想象的那么复杂,那么神秘。是他本身就不难?no,不是这样的,这完全归功于我们伟大的作者,他让我们从一开始就走对了路,从技术产生的根源出发。更容易理技术的本质涵义。我们会惊讶的发现原来如此,正如下面的例子:
1. 同类的不同对象方法具体实现细节不同?ok,虚函数应运而生。
2. 想简单的加入几项功能形成另一相关的class?ok,继承机制就是为了这个。
3. 如果还想新类博采各类之长。多继承。
可以看到,在这种思想下,很多难以理解的东西。就变的简单多了。
当然,在方便了编程方式的同时我们不要忘记这些方便都是,放弃运行效率为代价的。有时候我们不得不回过头来,考虑一下这些麻烦的问题。作者也提供了一些思考的方向,如。inline技术等等,但是正如上面所说,这些不是最重要的,
最后,我想说明下。从2.3节开始一直到本章结束,这里所有的内容都是值得玩味的。每次重读都会有不同的感受。 强烈建议在以后的学习中要不断的回头读这些内容,你会发现这样做的必要性,正如我在这里回避了代码细节级的技术。