先看代码,C++代码如下:

我刚开始认为这编译都编译不过,但是编译意外的顺利,先上运行结果

可以看到p1的方法通过传参p2的引用,修改了p2的私有成员。那这样的意思就等同于:对同类的实例来说,私有是没有意义的,那这样做的意义何在呢?
另外,这不是C++特有的,Java也是同理,代码如下:

运行结果:

原来,OO虽然是面向对象,但其封装的基本单位却是类,而不是对象。这就好像是,我们都是人,所以我可以用你的器官(器官是私有的吧);封装的意义就好像是,人不能用其他生物的器官。
其中的原理应该得从编译器入手,先挖个坑。
那么什么时候可以利用这个特点呢,目前只想到了一个当对象成员只需要被同类型的对象访问时,可以将声明为private,其他好处想到了再说。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充说明:拷贝构造
浙公网安备 33010602011771号