![]() |
1
1
将面向客户端的头中概念上可能是私有成员函数的函数移动到相关实现文件中的匿名命名空间中的非成员函数有很多值得说的地方,这主要是因为在添加/更改/删除客户端代码时,客户端代码不必重新编译,而且还因为改进了类封装。也就是说,头中的任何内联函数都无法查看/调用匿名命名空间内容,并且没有通用的封装阻止实现文件的翻译单元中的其他代码与之耦合。因此,该类以潜在成本更好地封装到实现文件中的其余代码,但这很少是一个主要的实际问题,因为那些非成员函数获取指向类类型对象的指针或引用,不太可能出于不相关的目的而意外重用,而且与任意的“客户端代码”相比,至少翻译单元提供的范围相对较小。 也就是说,上面的权衡并不是Scott Meyer的链接文章的主要内容,它侧重于选择头中声明的非成员非朋友函数与公共成员函数。但是,正如您已经注意到的,有几个概念适用。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |