Vik*_*kas 4 c++ generics boost
我最近介绍了通用编程库的设计,如STL,boost :: graph,boost PropertyMaps http://www.boost.org/doc/libs/1_54_0/libs/property_map/doc/property_map.html
使用像get(PropertyMap,key)这样的自由函数而不是像PropertyMap.get(key)这样的成员函数的原理是什么?
我知道这些函数的最通用形式是在"boost"命名空间中定义的.假设我在命名空间"project"中定义了一个新的PropertyMap,定义它的相应"get"函数的最佳位置是什么?"提升"或"项目"
有两个不同的原因:
更好的封装:通过最小化有权访问类属性的函数数量,可以改善封装.
可扩展性:在C++中,命名空间定义是打开的(您可以添加到它),同时关闭类定义; 因此,您可以添加自由函数,但不能添加成员函数.
虽然封装更多是品味问题,但可扩展性在通用编程中非常重要.你不想放弃第三方类型只是因为它缺少你需要的一种方法......当然,某些类型(例如内置类型或标准库类型)根本无法扩展.
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |