c++复习——一个小疑问
2024-09-05 07:00:09
C++中,子类为什么不能访问基类的private数据?
emmm 来自一个vegetable dog的疑问:
首先基类可以通过调用自身public成员函数来访问private
而子类又可以调用基类public成员函数。
那子类就可以间接访问基类private数据啊,有什么不对么 ??
解释:
通常情况下,基类可能不是你写的,那么你只是基类的用户。因此你去编写一个此基类的派生类时你应该只具有基类的使用权,而无权去修改它。此时对你来说,基类的一切实现都是不可见的,无论基类有什么样的Private成员和方法,都与你无关,那是它自己内部的实现细节。你作为基类的用户——此时你只是使用了基类提供的Public成员,所以是“用户”——也无需关心基类的Private细节。既然是“Private”,干嘛还去关心呢?那叫“窥探隐私”。
之所以规定子类无权访问基类的Private成员说白了就是为了保护基类的实现和使用不受破坏。试想,如果子类有权访问基类的Private成员,那么任何用户都可以通过一个简简单单的继承,就能读写某类的Private了,那么Private还有什么意思呢?
另外,对于代码来说,“用户”实际上就是程序员。
总结:
之前在书上看类的例题时 总感觉有一些代码很多余 删去了对测试结果也没有影响 但这只是因为我们被带入的数据思维定势了。
虽然只是一个很基础的问题 但对我这种vegetable dog的影响还是挺大的 虽然我们现在只是刚刚入门编程,但我们应该把眼光放长远一点~
最新文章
- luogg_java学习_07_抽象类_接口_多态学习总结
- [C++] socket - 2 [UDP通信C/S实例]
- 20141015--for语句2
- hadoop可能遇到的问题
- Combination Sum —— LeetCode
- (转) Name visibility
- Glib程序使用Valgrind查找内存泄露
- Collection用法
- JS实现图片不间断滚动
- java定时器schedule和scheduleAtFixedRate区别
- U813.0操作员功能权限和数据权限的设置
- 关于clone(java.lang.Object)重写
- VUE错误码Attribute ':sizeOpts' must be hyphenated
- shell变量的截取总结
- python tcp .demo
- 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字
- Ajax异步请求阻塞情况的解决办法
- WinPE ISO制作
- HTML5框架、背景和实体
- 使用System.Data.SQLite及其EF模块操作SQLite数据库(文件)
热门文章
- Java基础(十)
- MHA搭建
- 多模块环境下修改包名Rename directory与Rename package
- C++练习 | 类的继承与派生练习(1)
- 测试必知150个常用Linux命令,已为各位筛选整理
- Java 类的构造器中this()和super()的困惑
- [转载]C++STL概述
- qt treaview项checkbox样式
- 为什么angular library的build不能将assets静态资源打包进去(转)
- 测试Random类nextInt()方法连续两次结果一样的概率