使用 getter 设置私有变量

Setting private variables using a getter

本文关键字:变量 设置 getter 使用      更新时间:2023-10-16

如果可以组合它们,还需要一个单独的 get 和 set 函数,如下所示:

class A {
private:
    int var = 0;
public:
    int& getset(){ return var; };
};
int main()
{
  A a = A();
  a.getset() = 4;
  std::cout << "Hello, " << a.getset() << "!n";
}

假设我忽略了一些东西,但万一这不是一个好主意;为什么可以通过这种方式访问私人成员?

根本不需要getters和setter:只需将变量公开即可。

class A {
public:
    int var = 0;
};

如果你想隐藏实现细节,那么这个想法是 getter 是const而 setter 不是。所以它们必须是不同的功能

class A{
public:
    int getValue() const;
    int setValue(int new_value); // returns old value
private:
    /* implementation details: Value may be encoded other than in a simple variable */
};

如果你不需要任何值检查,那么你应该替换classstruct并删除不必要的方法:

struct A {
    int var = 0;
};
int main()
{
  A a;
  a.var = 4;
  std::cout << "Hello, " << a.var << "!n";
}

但是,如果您需要更困难的逻辑和一些 var 检查,那么您应该编写单独的 setter 和 getter,而不是像你的一样。 getset()主意很糟糕,不要再这样做了。