您的位置:首页 > 其它

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

2011-07-19 13:07 316 查看
慎重使用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已经足够好了,编译器也足够的聪明,我们把程序写对才是最重要的,性能问题是等到真正出现了,我们再来考虑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐