以非成员非友元替代成员函数

面向对象要求数据应该尽可能的被封装,然而与直观相反,成员函数带来的封装性比非成员非友元要低。

非成员函数可以允许函数有较大的包裹弹性。

如果某些东西被封装,则不可见,不可见的东西越多则我们就有越大的弹性去变化他,因为我们改变的仅仅直接影响看到改变的那些人事物。

 

另一方面如果非成员友元和成员函数机能相似,那么选择非成员友元会好些,因为他们并不增加访问私有成员变量的函数数量。

 

namespace和classse访问的范围不同,前者可以跨越多个源文件。将所有便利函数放在多个头文件中,保证她们的命名空间相同,意味着客户可以轻松扩展这组便利函数,

我们需要做的就是在这组命名空间中添加不同的非成员非友元函数。

还有,若所有参数都需要类型转换的时候,我们希望采用非成员函数去完成。

result=onehal*2;

result=2*onehal;错误

原因是:

只有当参数被列于参数咧内,此参数才是隐式类型转换的合格者。第一次调用伴随一个凡在参数咧内的参数,但是第二次调用的时候并没。

 

posted on 2017-04-20 16:04  邗影  阅读(247)  评论(0编辑  收藏  举报

导航