每日看点!Effective C++ 第二十三条 Prefer non-member non friend functions to me

来源:哔哩哔哩   时间:2023-01-22 18:08:47


【资料图】

宁以 non-member non-friend 函数替换 member 函数

下面有实例,三个对浏览器的操作

现在需要一个函数合并三个操作,有两种选择,一种是 member 另一种是 non-member non-friend

前面学过,面向对象守则要求数据应该尽可能被封装,如果使用 member 函数 clearEverything 那么封装度其实低于 non-member non-friend 函数 clearBrowser。non-member non-friend 函数的编译相联度更低,越多的内容被封装,能被看见的东西就越少,我们就能够越自由的改变内容(由条款22可知)。member 函数可以使用 private 函数、enums、typedefs,但是 non-member non-friend 函数就不能,二者提供的功能相同,non-member non-friend 不会增加 class 内 private 成分的函数数量,所以 non-member non-friend 使得 WebBrowser 具有更好的封装性。这点要区分清楚,non-member non-friend 而不是 non-member ,因为 friend 函数同 private 函数一样可以调用 private 函数、enums、typedefs,不能增加封装性。

使用  non-member non-friend 还有一个好处,可以降低编译相依关系,比如本案例中三个函数,我只需要使用其中一个,但是 class 中的函数会整体定义,无法分割。non-member non-friend 可以按照如下方式分割:

可以按照 namespace 分离到三个文件,假如我只需要使用 cookie 的内容,我就只需要包含file 1 和 file 2 头文件,不需要包含 file 3. STL 标准库就是如此,我不需要 list 我就不 #include <list>, 我需要 vector 我就 #include <vector> , 二者都在 std 空间下,可以做到分离使用。因此,class 的使用对于客户来说不可拓展,即使客户能够通过继承来产生 Derived,但是无法访问 Base 中被 private 修饰的成员,扩展性就差了许多。

关键词: BASE CLASS FRIEND FILE2 COOKIE VECTOR LIST 面向对象

上一篇:

下一篇:

文章推荐

  • 每日看点!Effective C++ 第二十三条 Prefer non-member non friend functions to me

    宁以non-membernon-friend函数替换member函数下面有实例,三个对浏览器的操作classWebBroswer{public:voidclearCache();voidclearHistory();voi

    哔哩哔哩 2023-01-22
  • 武大科考队员从南极发回新春祝福 每日看点

    武大科考队员从南极发回新春祝福

    极目新闻 2023-01-22
  • 每日视讯:早就“阳康”了,为啥还咳个不停?是肺炎吗

    早就“阳康”了,为啥还咳个不停?是肺炎吗

    呼吸时间 2023-01-22
  • 深度|除夕夜,天空中有一盏警灯_环球要闻

    深度|除夕夜,天空中有一盏警灯

    1039调查团 2023-01-21
  • 一图读懂丨2022年河南省巩固拓展脱贫攻坚成果同乡村振兴有效衔接工作“成绩单” 全球今亮点

    一图读懂丨2022年河南省巩固拓展脱贫攻坚成果同乡村振兴有效衔接工作“成绩单”

    中原网 2023-01-21
  • 广告

    X 关闭

    X 关闭

  • 众测
  • more+

    京张高铁每日开行17对冬奥列车

      京张高铁每日开行17对冬奥列车  预计冬奥服务保障期运送运动员、技术官员、持票观众等20万人次  2月6日,2022北京新闻中心举行“北

    北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》

      北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》  9岁小号手苦练悬臂吹响颂歌  2月4日晚,在北京冬奥会开幕式上,9岁的

    2022北京冬奥会开幕式这19首乐曲串烧不简单

      多名指挥家列曲目单 再由作曲家重新编曲 本报专访冬奥开幕式音乐总监赵麟  开幕式这19首乐曲串烧不简单  “二十四节气”倒计时、

    “一墩难求” 冰墩墩引爆购买潮

    设计师:没想到冰墩墩成爆款一墩难求冰墩墩引爆购买潮 北京冬奥组委:会源源不断供货北京冬奥会吉祥物冰墩墩近日引爆购买潮,导致一墩难求