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

摘要:

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

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

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

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

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

将其制定为成员

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

Else if :

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

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

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

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

如果需要虚拟行为:

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

Else:

    将其制定为成员函数


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值