Shuffy

不断的学习,不断的思考,才能不断的进步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

2007年6月26日

     摘要: 面向对象的基本原理要求数据和对其进行操作的函数应该被包装在一起,同时建议成员函数为更优秀的选择。但不幸的是,这一建议并不是正确的。它是建立在对“面向对象的东西意味着什么”这一点的误解之上的。通过理性分析可以得知,成员函数 clearEverything 的封装性实际上比非成员函数 clearBrowser 还要差。还有,非成员函数可以为 WebBrowser 相关的功能提供更便利的打包方法,从而减少编译时依赖,提高 WebBrowser 的可扩展性。很多情况下,非成员函数的方法都比成员函数的方法要好。理解这一结论的原因是十分重要的。  阅读全文

posted @ 2007-06-26 13:24 Shuffy 阅读(245) | 评论 (0)编辑 收藏

     摘要: 好吧,直截了当的说,在这一条中:我们首先要分析为什么数据成员不应该是公有的,与此同时,继续分析为什么数据成员也不能是 protected 的。然后就引出本条款的结论:数据成员必须是私有的。  阅读全文

posted @ 2007-06-26 13:20 Shuffy 阅读(266) | 评论 (0)编辑 收藏

     摘要: 一旦程序员把注意力都转向了对象传值方式隐含的效率问题(参见第 20 条)时,许多人都变成了极端的“改革运动者”,他们对传值方法采取斩草除根的态度,在他们不屈不挠追求传递引用方式的纯粹性的同时,他们也犯下了致命的错误:有时候传递的引用所指向的对象并不存在。这决不是一件好事情。   阅读全文

posted @ 2007-06-26 13:17 Shuffy 阅读(157) | 评论 (0)编辑 收藏

     摘要: 默认情况下, C++ 为函数传入和传出对象是采用传值方式的(这是由 C 语言继承而来的特征)。除非你明确使用其他方法,函数的形式参数总会通过复制实在参数的副本来创建,并且,函数的调用者得到的也是函数返回值得一个副本。这些副本是由对象的拷贝构造函数创建的。这使得“传值”成为一项代价十分昂贵的操作。  阅读全文

posted @ 2007-06-26 13:14 Shuffy 阅读(196) | 评论 (0)编辑 收藏