通过getter和setter(访问器)函数访问私有变量的重点是什么?

fdh*_*fdh 10 oop encapsulation class object

在类中,变量通常被私有化以用于封装,并且将变量限制到特定范围允许更好的错误控制和更少的错误.这是有道理的,因为可以访问变量的位置越少,该变量发生错误的位置就越少.

但是,我总是看到变量变为私有,然后使用getter和setter函数来检索该值(有时甚至是指向该变量的指针!).例如int a是私人防止公共访问,但后来getA()setA()允许他们直接访问.

那么,getter函数和setter函数是否违背了它的私有性?我的意思是具有访问器功能的私有变量与公共变量相同,只有访问它们的代码才会发生变化.(object.variable vs object.getVariable())

是否有人使用访问器函数将变量设为私有?与公开相比有什么优势吗?

我说的是一般的编程,但主要是C语言(即C,C++,C#,Obj-C).

Chr*_*ash 12

这里的关键词和标签是"封装".你隐藏了细节a,同时仍然可以使用它.我喜欢已经列出的原因,还有更多.这是另一个,你正在调试,你发现a它的值不正确.如果a是公开的,您必须检查每个地方a是否被访问.如果a使用setter方法是私有的,你知道唯一a可以改变的地方就是调用setA()- 这将是一个放置断点的好地方;)