C++编程规范之44:优先编写非成员非友元函数

摘要:

要避免交成员费:尽可能将函数指定为非成员非友元函数。

非成员非友元函数通过尽量减少依赖提高了封装性:函数体不能依赖于类的非公用成员。它们还能够分离巨类,释放可分离的功能,进一步减少耦合。它们能够提高通用性,因为在不知道一个操作是否为某个给定类型的成员的情况下,很难编写模版。

使用下面的方法确定函数是否应该是成员和友元:

//如果别无选择,就无需选择了;如果必需,就指定为成员;

If函数是操作符 =,->,或者()之一,则必须是成员:

将其制定为成员

//如果可能是非成员非友元函数,或者设为非成员非友元函数有好处,那就照办

Else if :

a)函数需要与其做参数不同的类型(例如操作符>>或者<<)

    b)需要对其最左参数进行强制转换

c)能够用类的公用接口单独实现

将其指定为非成员函数(如果情况a和情况b需要,可以将其指定为非成员友元函数)

如果需要虚拟行为:

    添加虚拟成员函数以提供虚拟行为,并通过它实现非成员函数。

Else:

    将其制定为成员函数


C++编程规范之44:优先编写非成员非友元函数

上一篇:python库mimetypes的bug


下一篇:c++ std - accumulate 求数组和