发布时间:2013-01-07 15:44:42
看的不是特别明白,当需要某些更方便的接口时(连续调用几个public接口,facade?),最好用非成员非友元的函数进行封装,而不是新增可访问内部成员的成员函数,减少对封装的冲击。这中普通函数可以何类放入同一个命名空间。可参照标准库的头文件。......【阅读全文】
发布时间:2013-01-07 15:26:11
OO三大核心之一封装的好处,客户程序通过公开的接口进行操作。如果直接访问赋值内部成员,造成了两者之间的耦合,失去了弹性,非常难以扩展。要么private,要么不封装。......【阅读全文】
发布时间:2013-01-07 11:25:50
需要返回一个对象时(尤其是重载的四则运算符),直接采用return by value 返回一个局部对象,抛弃引用指针的传址形式。传址方式返回有以下风险:如果是局部对象,则函数结束时就已经被销毁,堆区对象则面临着谁进行释放的问题,下面这种连续调用还可能引发内存泄露。a = b + c +d;也不要试图在此使用静态成员来图方便,易导致bugif((a+b) == (c+d))使用静态成员保存结果,这里将是恒等的,因为第二次的值覆盖了第一次的值。......【阅读全文】
发布时间:2013-01-07 11:04:14
值传递适合于内置类型(和STL容器? 虽然容器内元素都是传值的)。类类型对象采用值传递会涉及到对象考构,结束时的析构,成本可能比较高(取决于其copy的成本),而且派生类对象会引发切割(slice down),所以推荐的是传引用。隐含一点:copy要严密设计。......【阅读全文】
发布时间:2013-01-07 10:53:59
设计一个类的种种方面考虑,把其当作一个完整的type来考虑(难道不是吗。。)。首先要明确是否真的需要这么一个type。实体对象如何被创建和销毁,对象复制(特别注意作为值传递的参数时)和赋值有无区别。需要对外提供哪些接口(包括重载的运算符),内部需要哪些成员,是否要配合其它类(继承关系)。等等很多方面的考虑。......【阅读全文】