c++复习——一个小疑问

C++中,子类为什么不能访问基类的private数据?

 
 
emmm  来自一个vegetable dog的疑问:
 
首先基类可以通过调用自身public成员函数来访问private

而子类又可以调用基类public成员函数。

那子类就可以间接访问基类private数据啊,有什么不对么 ??
 
 

解释:

通常情况下,基类可能不是你写的,那么你只是基类的用户。因此你去编写一个此基类的派生类时你应该只具有基类的使用权,而无权去修改它。此时对你来说,基类的一切实现都是不可见的,无论基类有什么样的Private成员和方法,都与你无关,那是它自己内部的实现细节。你作为基类的用户——此时你只是使用了基类提供的Public成员,所以是“用户”——也无需关心基类的Private细节。既然是“Private”,干嘛还去关心呢?那叫“窥探隐私”。


之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?


另外,对于代码来说,“用户”实际上就是程序员。

总结:

之前在书上看类的例题时 总感觉有一些代码很多余 删去了对测试结果也没有影响 但这只是因为我们被带入的数据思维定势了。

虽然只是一个很基础的问题 但对我这种vegetable dog的影响还是挺大的 虽然我们现在只是刚刚入门编程,但我们应该把眼光放长远一点~ 

 
 
原文地址:https://www.cnblogs.com/yuuuuu422/p/12083594.html