码迷,mamicode.com
首页 > 其他好文 > 详细

[023]宁以non-member、non-friend替换member函数

时间:2014-12-18 15:05:33      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   使用   sp   on   文件   数据   

作者在这一节中花了大幅度的篇幅来介绍为什么最好使用non-member、non-friend函数。

思路如下:

场景:如果有一个class用来表示网页浏览器,那么清楚缓存及历史记录的时候,我们可能定义下面的类:

class Web {
public:
    void clearCache();
    void clearCookies();
    void clearHistory();
}

但是也有可能用户需要一下子全部清除这些信息,于是我们再定义下面这个成员函数:

class Web {
public:
void clearEverything(); ..... }

当然,我们可以使用一个non-member函数来完成这个操作:

void clear (Web& wb) {
    wb.clearCache();
    wb.clearCookies();
    wb.clearHistory();
}

根据面向对象守则要求,数据以及操作数组的那些函数应该被捆绑在一块。虽然这么说,但是针对clear操作而言,non-member函数clear()具有更大的封装性。

因此,我们推荐使用non-member函数。

而在实际操作中,在class拥有很多操作函数的时候,我们经常是将class成为一个non-member函数并且位于web所在的同一个namespace内。比如:

 1 // 头文件“web.h”
 2 namespace Web{
 3 class Web{};
 4 .... // 放入核心机能,例如几乎客户需要的所有non-member函数
 5 
 6 }
 7 
 8 // 头文件“webbrowser.h”
 9 namespace Web{
10 class Web{};
11 .... // 与浏览器标签相关的函数
12 
13 }
14 
15 // 头文件“webcookies.h”
16 namespace Web{
17 class Web{};
18 .... // 与Cookies相关的函数
19 
20 }

上述正式C++标准程序库的组织方式。

 

◆总结

宁以non-member、non-friend替换member函数。这样做可以增加封装性、包裹弹性和机能扩充性。

[023]宁以non-member、non-friend替换member函数

标签:style   blog   ar   color   使用   sp   on   文件   数据   

原文地址:http://www.cnblogs.com/hustcser/p/4171588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!