这只是个编程思想,如果你希望并允许调用者来修改这个私有变量,你就为他准备这个函数来修改这个变量,如果不希望,也不允许,你就不写这个函数,那么使用你的代码的人就明白你的意图了(当然这个使用者是指正常使用者)。
私有变量只是在编译期的保护,并只是为调用者传达自己的编程意图,它并不能真真做到私有,比如类A,可以不用f函数就可以达到修改私有变量x的目的:
A a;
*((int*)(&a)) = 100;
这样可以把私有变量赋值为100,这种做法需要知道类A的数据结构,并通过实例对象a的首地址和变量x在a中的偏移地址来达到修改目的的,换句话说,如果我知道你的类结构,就可以访问到类中的所有私有成员变量并达到修改的目的。有兴趣的话可以通过调试研究一下。