![]() |
1
1
将面向客户端的头中概念上可能是私有成员函数的函数移动到相关实现文件中的匿名命名空间中的非成员函数有很多值得说的地方,这主要是因为在添加/更改/删除客户端代码时,客户端代码不必重新编译,而且还因为改进了类封装。也就是说,头中的任何内联函数都无法查看/调用匿名命名空间内容,并且没有通用的封装阻止实现文件的翻译单元中的其他代码与之耦合。因此,该类以潜在成本更好地封装到实现文件中的其余代码,但这很少是一个主要的实际问题,因为那些非成员函数获取指向类类型对象的指针或引用,不太可能出于不相关的目的而意外重用,而且与任意的“客户端代码”相比,至少翻译单元提供的范围相对较小。 也就是说,上面的权衡并不是Scott Meyer的链接文章的主要内容,它侧重于选择头中声明的非成员非朋友函数与公共成员函数。但是,正如您已经注意到的,有几个概念适用。 |
![]() |
notamaster · 匿名命名空间中的变量声明和其他位置的定义 2 年前 |
![]() |
Bipolo · 使用另一个命名空间的名称创建子命名空间 2 年前 |
![]() |
The Vivandiere · 从命名空间中引入单个名称 6 年前 |
![]() |
Bercovici Adrian · 静态类内定义的类的约束 6 年前 |
![]() |
shir k · 使用命名空间重载函数(&O) 6 年前 |
![]() |
yearntolearn · R包命名空间 6 年前 |
![]() |
ambikanair · 与特权pod共享装载命名空间 7 年前 |
![]() |
landau · 如何检查环境是否为包命名空间[重复] 7 年前 |