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

首先基类可以通过调用自身public成员函数来访问private而子类又可以调用基类public成员函数。那子类就可以间接访问基类private数据啊,有什么不对么... 首先基类可以通过调用自身public成员函数来访问private

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

那子类就可以间接访问基类private数据啊,有什么不对么
展开
 我来答
chiqp1986
2013-07-27 · TA获得超过270个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:199万
展开全部
很简单的道理,你上学时候,你爸给你办了张银行卡,每月从他的总账里给你划点钱,你可以使用银行卡里的钱,你爸也可以使用,但你不能直接去使用你爸总账里的。
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
zjfaok
2013-07-27 · TA获得超过6807个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1732万
展开全部
所以说只能“间接”访问啊,如果基类禁止访问的话,派生类以及其他使用了基类的代码就无法访问这个成员……
当然这些成员完全还是可以访问的,只要把private改成public就可以了。只要有代码这样做完全没有任何问题……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lkjhggv
2013-07-27 · TA获得超过3063个赞
知道大有可为答主
回答量:1550
采纳率:66%
帮助的人:1359万
展开全部
子类或者外部代码可以“间接访问”私有成员,但是这个“间接访问”只能是类的编写者决定,类的使用者无权决定,或者说这个访问对类的使用者不可见。

换句话说,如果基类没有间接访问私有成员的代码,子类就不能访问基类的私有成员。
追问
你说的使用者是EXE用户吧?那肯定见不着啊,用户连代码的影子都看不到啊

不知道您说的是这个意思么?
追答
使用者是指使用类的代码/人。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c6c78e9
推荐于2017-12-15 · TA获得超过2283个赞
知道小有建树答主
回答量:620
采纳率:0%
帮助的人:1021万
展开全部
通常情况下,基类可能不是你写的,那么你只是基类的用户。因此你去编写一个此基类的派生类时你应该只具有基类的使用权,而无权去修改它。此时对你来说,基类的一切实现都是不可见的,无论基类有什么样的Private成员和方法,都与你无关,那是它自己内部的实现细节。你作为基类的用户——此时你只是使用了基类提供的Public成员,所以是“用户”——也无需关心基类的Private细节。既然是“Private”,干嘛还去关心呢?那叫“窥探隐私”。
之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?
另外,对于代码来说,“用户”实际上就是程序员。
追问
哦 原来如此。你说的用户就是分工写代码的,那些写子类的程序员吧?

我只是问,我写一个程序,里面有个基类,子类。然后子类调用基类public, 基类public又调用private, 这样就完成了间接调用。

这么说的话,原理上可以,但实际应用上,不会这样用,是吧?
追答
对。因为你根本无权关心基类的public是不是调用了private,那是它自己的事儿,你不能管,而且“法律规定”你管不了。所以你完全不用管基类的private是怎么回事就行了。根据“法律规定”,基类所需要做的就是向它的用户提供可以使用的public,并且把声明的功能完备的实现就够了;而你作为它public的使用者,无需知晓它是怎么实现的这些功能。
不过,如果你非要突破“法律规定”去“犯法”的话,基类也是拦不住你的…
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友810698b
2013-07-27 · 超过12用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:38.9万
展开全部
我觉得没什么不对的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式