OO语言的相同类不同实例通过引用访问私有成员

Posted on 2016-12-29 20:23  哈大哈傻瓜  阅读(105)  评论(0)    收藏  举报

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

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

可以看到p1的方法通过传参p2的引用,修改了p2的私有成员。那这样的意思就等同于:对同类的实例来说,私有是没有意义的,那这样做的意义何在呢?

另外,这不是C++特有的,Java也是同理,代码如下:

运行结果:

 

原来,OO虽然是面向对象,但其封装的基本单位却是类,而不是对象。这就好像是,我们都是人,所以我可以用你的器官(器官是私有的吧);封装的意义就好像是,人不能用其他生物的器官。

其中的原理应该得从编译器入手,先挖个坑。

那么什么时候可以利用这个特点呢,目前只想到了一个当对象成员只需要被同类型的对象访问时,可以将声明为private,其他好处想到了再说。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

补充说明:拷贝构造