浅谈C++的命名空间

命名空间是比class更大的一个结构,它的包裹也更加具有弹性,更加方便扩充。

在命名空间中根据实际需求编写多个类或者头文件,并加入一些non-member non-friend函数来操作相关的类行为或数据,这样做有两方面的好处:

1)不破坏封装性

C++的封装结果是数据能够被很少的客户访问,封装性越大,可以访问数据的函数就应该越少,如果将操作数据的函数写成non-member non-friend可以完成相应的功能,那么就不要在类中添加成员函数来完成这些操作。

2)减少编译相依

可能会遇到这样的类:比如WebBrowser类,可能会与cookie相关,可能会与打印相关,可能会与书签相关,如果某个用户只需要其中一类的操作时,就不应该将实现其他功能的代码也编译了,此时可以在一个命名空间内编写多个头文件,每一个头文件对应一类操作,不同的客户可以包含不同的头文件,这样就不必编译所有与WebBrowser相关的代码,减少代码相依。

3)方便扩充

用户如果想要对WebBrowser做更多的事,那么TA只需要写一个头文件,隶属于上面的命名空间,然后加入一些non-member non-friend函数即可,即无需改动旧有的代码,新添加的头文件和已有的就文件可以直接融为一体。class则不可以扩展,虽然它可以派生出子类,但是派生类不可以访问base classes的private成员。

 

posted on 2013-05-23 16:37  Sophia-呵呵小猪  阅读(165)  评论(0编辑  收藏  举报