为类成员设计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/