取决于"无意的变化"的意思.所有代码都是由某人编写的,所以如果他正在更改某个类的成员变量,则该更改是有意的(至少是他自己的一方).但是,类的实现者可能没有预料到这一点,它可能会破坏功能.
想象一下非常简单的堆栈:
class Stack
{
public:
int Items[10];
int CurrentItemIndex;
}
Run Code Online (Sandbox Code Playgroud)
现在CurrentItemIndex指向表示堆栈顶部当前项的索引.如果有人继续进行更改,那么您的堆栈就会损坏.同样,有人可以写东西Items.如果public有的话通常表明它是供公众使用的.
同时使成员私有提供实现细节的封装.想象一下,有人通过检查迭代上述实现的堆栈Items.然后,如果堆栈的实现被更改为链接列表以允许任意数量的项目,它将破坏所有代码.最后维护会杀了你.
类的公共接口应该始终尽可能稳定,因为这是人们将要使用的.您不想仅仅因为更改了一些细节而使用类触摸x行代码.