可能重复:
为什么要使用 getter 和 setter?
谁能告诉我getter/setter方法的用途是什么?
在一次采访中,有人让我写一个简单的类......所以,我写了一个如下所示的类:
class X
{
int i;
public:
void set(int ii){ i = ii;}
int get(){ return i;}
};
现在,问题是这样的:
Q1。为什么将变量“i”声明为私有而不是公共?
我的回答:Bcoz,数据总是敏感的,通过将其声明为私有,您将防止它暴露于外部世界。
为了反驳我的推理,面试官说......“那么,你为什么要提供一个公共的 getter/setter 方法??既然这些成员函数是公共的,所以变量 'i' 仍然暴露给外界,任何人都可以更改'i' 的值。”
此外,面试官建议我重写我之前的课程如下:
class X
{
public:
int i;
};
好处是:您可以更快地修改“i”的值……因为这次不需要函数调用。
不过,面试官的推理似乎很好......因为通过制作私有变量“i”和公共 get/set 方法,您无法保护您的数据。那么,我们为什么要编写 get()/set() 方法呢?