我是一个完全的新手,脑海中有很多问题,还有很多需要用C++来体验!有一件事情让我感到非常困惑,那就是公共变量的使用,我看到了很多像这样的代码:
class Foo {
private:
int m_somePrivateVar;
public:
void setThatPrivateVar (int const & new_val) {
m_somePrivateVar = new_val;
}
int getThatPrivateVar (void) const {
return m_somePrivateVar;
}
};
为什么有人会将变量隐藏并实现访问器和修改器,当它们除了赋予新的值(没有范围检查等)或返回值之外,没有做任何其他事情呢?听说有一些原因在某些情况下很有说服力,但是想象一下,如果为一个有很多不需要检查等操作的变量的大型类以这种方式实现,那么会怎样呢?
那么我这样问你,你什么时候使用公共变量?你是否使用过?
Foo
提供了什么,而不是Foo
的当前实现。因此,在这个问题上,不要称某个函数为“SetThatPrivateVar”,因为公共接口不应该提及私有事项。 - Steve JessopSet_Mode
函数可能可以使用m_Mode
成员变量,但即使没有m_Mode
变量,函数名Set_Mode
仍然是有意义的。比如,当您通过使用每个模式实现的类继承结构或者其他方式来切换到新的 PIMPL 实例时更改模式时,“Mode” 作为一个概念也是有意义的,与其是否命名为成员变量无关。 - user180247