您的位置:首页 > 编程语言 > C语言/C++

宁以non-member-and-non-friend替换member函数——effective c++学习笔记

2010-11-19 23:08 381 查看

宁以non-member-and-non-friend替换member函数(Prefer non-member non-friend function
to member functions.)

non-member-and-non-friend表示非成员且非友元。

之所以这样做,是为了减少能够访问private成员的代码的数量,以此来提高封装性。

namespace的使用
1、
namespace的定义可以累加。
2、
namespace既可以包含声明,也可以包含定义。
3、
对于namespace内函数,变量的引用,如果在namespace内,则可以直接使用函数名。如果在namespace外,则要需要使用name::的方式引用。在局部命名空间内,如果和全局命名空间重名,则不加修饰的话引用的是局部。直接加“::”则表示使用的是全局的命名空间。定义是可以在变量和函数前加上命名空间的限定,则可以使用此命名空间的所有的函数。如果没有声明而直接定义,则不可以。
4、
嵌套命名空间:使用的时候:name1::name2::value;
5、
一个Type首先在其所在的嵌套命名空间查找什么,然后上层命名空间查找,最后在全局空间查找。
6、
为命名命名空间和static修饰函数类似。
7、
名字空间别名,using声明,using指示符
8、
别名:namespace IBM = Inink_business_machine
9、
using声明可以在其声明的域中以简短的名字调用。
10、
using指示符运行我们让来自特定名字空间的所有名字已简单的名字可见。

注意两个问题:
1、
是在member函数和non-member-and-non-friend函数间作出选择。
2、
虽然不可以是members函数,但可以是其他class的member。

至于这样做的机能扩充性,是由namespace来实现的。
比如,对于有些便利函数来说,可能一个class会非常多,那么对其进行分类,并且声明在不同的头文件中,同时也定义在一个namespace中。如果需要扩展,则直接在不同的头文件中声明即可。这一点和我在做网管代理时,我的card类就有相当多的这样的函数。

注意:
1、宁以non-member-and-non-friend函数替换member函数,这样做可以增加封装性,包裹性和机能扩充性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐