使用 getter 设置私有变量
Setting private variables using a getter
如果可以组合它们,还需要一个单独的 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 */
};
如果你不需要任何值检查,那么你应该替换class
来struct
并删除不必要的方法:
struct A {
int var = 0;
};
int main()
{
A a;
a.var = 4;
std::cout << "Hello, " << a.var << "!n";
}
但是,如果您需要更困难的逻辑和一些 var 检查,那么您应该编写单独的 setter 和 getter,而不是像你的一样。 getset()
主意很糟糕,不要再这样做了。
相关文章:
- 将双精度变量设置为另一个变量的值
- 将变量设置为类型模板
- 如何为具有整数名称的变量设置位集
- 在 c++ 中将多个变量设置为相同的值
- 我是否必须在类中的所有变量C++设置为 private?
- 在C 中,如何使用变量设置Char Grid2d [x] [y]
- 如果将变量设置为等于新对象,旧对象会发生什么情况?
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- 是否可以将类成员变量设置为类函数的结果?
- 将 c++ 代码中的当前用户环境变量设置为对其他进程(如 cmds)可见
- 此CMAKE错误意味着什么?我的变量设置为未发现
- 如何基于用户设置的初始变量设置一组常数值
- 如何使用const成员变量设置数组大小
- 使用变量设置数组长度
- 使用变量设置bitset的大小
- 在C 中,如何将派生类中的私有变量设置为基类的输入值
- C 标量变量设置为零值
- C 定义变量设置值
- 正在将类级别的2D数组变量设置为传入值-C++
- 是否有C++标准类在作用域出口处将变量设置为值