
C++中,子类为什么不能访问基类的private数据?
首先基类可以通过调用自身public成员函数来访问private而子类又可以调用基类public成员函数。那子类就可以间接访问基类private数据啊,有什么不对么...
首先基类可以通过调用自身public成员函数来访问private
而子类又可以调用基类public成员函数。
那子类就可以间接访问基类private数据啊,有什么不对么 展开
而子类又可以调用基类public成员函数。
那子类就可以间接访问基类private数据啊,有什么不对么 展开
5个回答
展开全部
很简单的道理,你上学时候,你爸给你办了张银行卡,每月从他的总账里给你划点钱,你可以使用银行卡里的钱,你爸也可以使用,但你不能直接去使用你爸总账里的。

2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
所以说只能“间接”访问啊,如果基类禁止访问的话,派生类以及其他使用了基类的代码就无法访问这个成员……
当然这些成员完全还是可以访问的,只要把private改成public就可以了。只要有代码这样做完全没有任何问题……
当然这些成员完全还是可以访问的,只要把private改成public就可以了。只要有代码这样做完全没有任何问题……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子类或者外部代码可以“间接访问”私有成员,但是这个“间接访问”只能是类的编写者决定,类的使用者无权决定,或者说这个访问对类的使用者不可见。
换句话说,如果基类没有间接访问私有成员的代码,子类就不能访问基类的私有成员。
换句话说,如果基类没有间接访问私有成员的代码,子类就不能访问基类的私有成员。
追问
你说的使用者是EXE用户吧?那肯定见不着啊,用户连代码的影子都看不到啊
不知道您说的是这个意思么?
追答
使用者是指使用类的代码/人。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通常情况下,基类可能不是你写的,那么你只是基类的用户。因此你去编写一个此基类的派生类时你应该只具有基类的使用权,而无权去修改它。此时对你来说,基类的一切实现都是不可见的,无论基类有什么样的Private成员和方法,都与你无关,那是它自己内部的实现细节。你作为基类的用户——此时你只是使用了基类提供的Public成员,所以是“用户”——也无需关心基类的Private细节。既然是“Private”,干嘛还去关心呢?那叫“窥探隐私”。
之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?
另外,对于代码来说,“用户”实际上就是程序员。
之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?
另外,对于代码来说,“用户”实际上就是程序员。
追问
哦 原来如此。你说的用户就是分工写代码的,那些写子类的程序员吧?
我只是问,我写一个程序,里面有个基类,子类。然后子类调用基类public, 基类public又调用private, 这样就完成了间接调用。
这么说的话,原理上可以,但实际应用上,不会这样用,是吧?
追答
对。因为你根本无权关心基类的public是不是调用了private,那是它自己的事儿,你不能管,而且“法律规定”你管不了。所以你完全不用管基类的private是怎么回事就行了。根据“法律规定”,基类所需要做的就是向它的用户提供可以使用的public,并且把声明的功能完备的实现就够了;而你作为它public的使用者,无需知晓它是怎么实现的这些功能。
不过,如果你非要突破“法律规定”去“犯法”的话,基类也是拦不住你的…
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得没什么不对的啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询