相关疑难解决方法(0)

为什么人们写私有字段getter返回非const引用?

我们都同意公共变量不利于封装以及所有这些.但是,我注意到有很多代码可以执行此类操作:

class foo {
private:
    int integer_;
    string someString_;
    // other variables
public:
    int& integer() { return integer_; }
    string& someString() { return someString_; }
    // other "functions"
}

int main() {
    foo f;
    f.integer() = 10;
    f.someString() = "something";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我已经看到这在许多地方被使用,我不明白为什么.基本上它返回对数据的引用,从而将其直接暴露给外部.所以封装并没有真正实现,不是从任何角度来看.

为什么这个常用?

c++ getter encapsulation private-members getter-setter

14
推荐指数
3
解决办法
2039
查看次数

保护成员变量是一种好习惯吗?

问这个问题,因为我觉得稍后在派生类中需要我的基础的成员变量.是否有保护它们的缺点?

编辑:编辑以更好地表明我的意图.

编辑:@sbi:这也错了吗?

此类将用于在其他类中进行错误记录和检索.从它衍生或使用它的对象是否更好 - 我不知道.但我认为getter和setter方法就是这个类的全部内容.

class ErrorLogger
{
   public:
      //Making this function virtual is optional
      virtual void SetError(const char*, ...);
      const char* GetError() const;
   protected:
      char* z_ErrorBuf;
};
Run Code Online (Sandbox Code Playgroud)

c++

10
推荐指数
1
解决办法
3459
查看次数