如果可以组合它们,还需要一个单独的 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()
主意很糟糕,不要再这样做了。