C++中,子类为什么不能访问基类的private数据?
emmm 来自一个vegetable dog的疑问:
首先基类可以通过调用自身public成员函数来访问private
而子类又可以调用基类public成员函数。
那子类就可以间接访问基类private数据啊,有什么不对么 ??
而子类又可以调用基类public成员函数。
那子类就可以间接访问基类private数据啊,有什么不对么 ??
解释:
通常情况下,基类可能不是你写的,那么你只是基类的用户。因此你去编写一个此基类的派生类时你应该只具有基类的使用权,而无权去修改它。此时对你来说,基类的一切实现都是不可见的,无论基类有什么样的Private成员和方法,都与你无关,那是它自己内部的实现细节。你作为基类的用户——此时你只是使用了基类提供的Public成员,所以是“用户”——也无需关心基类的Private细节。既然是“Private”,干嘛还去关心呢?那叫“窥探隐私”。
之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?
另外,对于代码来说,“用户”实际上就是程序员。
总结:
之前在书上看类的例题时 总感觉有一些代码很多余 删去了对测试结果也没有影响 但这只是因为我们被带入的数据思维定势了。
虽然只是一个很基础的问题 但对我这种vegetable dog的影响还是挺大的 虽然我们现在只是刚刚入门编程,但我们应该把眼光放长远一点~