将类中的数据声明为私有的原因很重要?

dar*_*rko 3 c++ oop private class

据我所知,只有班级可以访问数据,因此它"更安全",但不是,但我真的不明白为什么它是如此重要.也许是因为我没有让任何程序复杂到数据可能会被意外改变但是在学习课程时被告知私有化是很重要因为当我改变的时候它更"安全"程序中的数据是我明确指出的.任何人都可以提供一些例子,如果这些数据不是私有的,那么数据会被无意改变吗?

Chr*_*Wue 5

取决于"无意的变化"的意思.所有代码都是由某人编写的,所以如果他正在更改某个类的成员变量,则该更改是有意的(至少是他自己的一方).但是,类的实现者可能没有预料到这一点,它可能会破坏功能.

想象一下非常简单的堆栈:

class Stack
{
    public:
        int Items[10];
        int CurrentItemIndex;
}
Run Code Online (Sandbox Code Playgroud)

现在CurrentItemIndex指向表示堆栈顶部当前项的索引.如果有人继续进行更改,那么您的堆栈就会损坏.同样,有人可以写东西Items.如果public有的话通常表明它是供公众使用的.

同时使成员私有提供实现细节的封装.想象一下,有人通过检查迭代上述实现的堆栈Items.然后,如果堆栈的实现被更改为链接列表以允许任意数量的项目,它将破坏所有代码.最后维护会杀了你.

类的公共接口应该始终尽可能稳定,因为这是人们将要使用的.您不想仅仅因为更改了一些细节而使用类触摸x行代码.