我知道只有类才能访问数据,因此它“更安全”,但我真的不明白为什么它如此重要。也许是因为我没有把任何程序做得足够复杂,以至于数据可能会被意外更改,但在学习类(class)和被告知将事情设为私有(private)很重要时它有点令人困惑,因为当我唯一一次更改时它“更安全”程序中的数据是我明确表示的。谁能提供一些示例,说明如果数据不是私有(private)的,数据会被无意更改?
最佳答案
取决于您所说的“无意更改”是什么意思。所有代码都是由某人编写的,因此如果他正在更改类的成员变量,那么更改是有意的(至少从他这边来说)。然而,该类的实现者可能没有预料到这一点,它可能会破坏功能。
想象一个非常简单的堆栈:
class Stack
{
public:
int Items[10];
int CurrentItemIndex;
}
现在 CurrentItemIndex
指向代表堆栈顶部当前项目的索引。如果有人继续更改它,那么您的堆栈已损坏。同样,有人可以将内容写入 Items
。如果某物是 public
那么它通常是一个标志,表明它是为公共(public)使用而设计的。
同时将成员设为私有(private)提供了实现细节的封装。想象一下,有人通过检查 Items
在上述实现上迭代堆栈。然后,如果堆栈的实现被更改为链表以允许任意数量的项目,它将破坏所有代码。最后维护会杀了你。
类的公共(public)接口(interface)应该始终尽可能稳定,因为这是人们将要使用的。您不想仅仅因为更改了一些小细节就使用一个类来修改 x 行代码。
关于c++ - 为什么将类中的数据声明为私有(private)的示例很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038882/