改善程序与设计的55个具体做法 day9

条款23:宁以non-member、non-friend替换member函数

即 以非成员函数 非友元函数 替换成员函数。

直观上,面向对象应该尽可能的封装,封装数据、封装操作等等,所以这个条款可能有悖常理。

比如一个类成员函数CObj::Func(){ Dosomething(); }

该函数会调用其他成员函数做一点微小的工作,想一下把成员函数换成普通函数Func2(const CObj& obj);

Func2(const CObj& obj)

{

    obj.Dosomething();

}

看,非成员、非有缘函数也可以做到,而且【非成员 非友元函数 不会访问到类的其他成员, 这样会更少的机会犯错】。

然而,该【非成员 非友元函数 仍然可以是其他类的成员函数或友元函数】 

当程序组织的形式上,可以把该 函数 和 该类 放在同一个命名空间下。

系甘啦。

原文地址:https://www.cnblogs.com/cuish/p/5944103.html