为类成员设计setter和getter的常用方法如下

class QNumber
{
    public:
        void setNumber(unsigned int xNumber){ this->mValue = xNumber; };
        unsigned int getNumber(void) const { return this->mValue; };

    private:
        unsigned int mValue;
}


如果成员是另一个类(例如QRational而不是unsigned int),那么就性能而言,getter最好返回一个引用。

因此,修改后的设计将是

class QNumber
{
    public:
        const QRational & value(void) const  { return  mValue;} // getter
              QRational & value(void)        { return  mValue;} // 'setter'

    private:
        QRational mValue;
}


我的问题是-后一种方法是否存在潜在的问题?我在其他人的代码中没有看到太多,对我而言,它似乎比set / get方法更优雅。

非常感谢,
丹尼尔

最佳答案

获取器和设置器的重点是将接口与实现分开。如果返回引用,则它必须指向实现中的某个位置。现在,如果您更改实现,则必须开始按值返回。

就个人需求而言,我个人更喜欢public非静态成员。参考语义的获取器和设置器提供了两个方面中最糟糕的一个。 (不过,我正在研究proposal来改善它们。)

关于c++ - C++类中成员 setter / getter 的正确设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30435590/

10-11 23:16
查看更多