《大规模C++程序设计》读书笔记7

本文探讨了C++中封装的重要性及友元关系的原则,包括局部与远距离友元的区别,以及如何在保持封装的同时增强组件的可扩展性和可维护性。

指导方针7:避免把(远距离的)友元关系授权给定义在另一个组件中的一个逻辑实体。

原则10:一个组件内部的友元关系是该组件的一个实现细节。


定义13:若通过一个组件的逻辑接口不能通过程序访问或探测到该组件包含的一个实现细节(类型、数据或函数),则称这些实现细节被该组件封装了。

原则11:为定义在同一个组件内的类授予(局部的)友元关系不会破坏封装。

从组件的角度来说,一个操作(函数、运算符重载)是不是某一个类的友元,无法从接口表现出来。

原则12:在组件内定义一个容器类的同时定义一个迭代器类,可以在保持封装的同时,使组件具有用户可扩展性、改进可维护性和加强重用性。

原则13:对一个定义在系统的单独物理部分的逻辑实体,授权(远距离)友元关系,会破坏授予该友元关系的那个类的封装。

在一个组件之外对逻辑实体授予友元关系,称为远距离友元关系(long-distance friendship)。

对系统的另一个物理片段授予私有访问权,会导致封装存在漏洞,很可能会被通过插入一个假冒的组件来获得访问而滥用。

局部友元关系的过度使用也会影响可维护性,授权友元关系会扩大一个类本身的"接口",有权访问对象实现细节的函数越多,当修改实现时需要回访的代码也越多。

原则14:友元关系影响访问特权但不隐含依赖。

Technorati : C++, 大规模C++程序设计, 读书笔记

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值