我目前正在阅读斯科特·迈尔斯的有效C书,但是我不知道第23项.他说:
Prefer non-member non-friend functions to member functions. Doing so increases encapsulation,packaging flexibility,and functional extensibility.
虽然我可以看到在课外添加外部函数的观点,但我看不到它的优点.他谈论这些,因为它们正在增加封装.那么是的,这是正确的,因为非会员的非朋友功能将无法访问在类中声明的任何成员变量作为私有成员变量.但是,这就是我无法解决的问题.拥有允许对象控制的成员函数有些重要 – 对于所有数据成员公开的POD可以做什么?我真的看不到任何实际的用途.哈维宁说,即使我们有非会员的非朋友功能,封装也不会随着我们的需要而改变!会员功能与我们的对象进行交互.
那么为什么我 – 或其他任何人在这个问题上更喜欢非成员非会员功能的会员功能?当然,我们可以在已经存在的成员函数上写封包,这些函数可能按逻辑顺序排列,但这些都是.我在这里看不到任何复制的封装.