慎重使用Get/Set成员函数(二)Set函数和其他修改函数的替代办法

慎重使用Get/Set成员函数(二)Set函数和其他修改函数的替代办法
黄国强 2011-7-19
文说到,尽量避免使用Get和Set这样的函数,下面介绍的是替代办法。
第一步,把Set中的函数参数都放到构造函数中。
第二步,把所有其他的修改函数都变成不变函数。
比如下面的代码:
class CSample
{
public:

void    Plus(int x){m_nVal+=x;}

};

这个Plus函数就是典型的修改函数,需要改成这样的形式。 CSample Plus(int x)const;

面两步完成后 ,上次的例子,应该变成这样:
class CSample
{
...
private:
int m_nVal;

public:
CSamle(int nVal = 0);

CSample Plus(int x)const{return CSample(m_nVal+x);}
...
};

然这个CSample类变成了一个值对象。值对象的好处很多,举一个例子,如果在函数Plus内部出现了异常,可以安全的处理,因为原先对象并没有改变。
的人担心效率问题,我觉得这是不必要的。现在的PC已经足够好了,编译器也足够的聪明,我们把程序写对才是最重要的,性能问题是等到真正出现了,我们再来考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值