c语言中public 用法,深入理解C++中public、protected及private用法
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。
这里我们首先要明白下面几点。
1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:
用户代码(类外)可以访问public成员而不能访问private成员;private成员只能由类成员(类内)和友元访问。
2.类的另一个特征就是继承,protected的作用就是实现这一目的。所以:
protected成员可以被派生类对象访问,不能被用户代码(类外)访问。
现来看看如下示例:
继承中的特点:
先记住:不管是否继承,上面的规则永远适用!
有public, protected, private三种继承方式,它们相应地改变了基类成员的访问属性。
1.public继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:public, protected, private
2.protected继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:protected, protected, private
3.private继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:private, private, private
但无论哪种继承方式,上面两点都没有改变:
1.private成员只能被本类成员(类内)和友元访问,不能被派生类访问;
2.protected成员可以被派生类访问。
再来看看以下代码:
1.public继承
代码如下:
2.protected继承:
代码如下:
3.private继承:
代码如下:
通过以上的代码都备有较为详尽的注释,读者应该能够理解。仔细看代码中派生类B中定义了和基类同名的成员a,此时基类的a仍然存在,可以验证。
输出:
16
20
所以派生类包含了基类所有成员以及新增的成员,同名的成员被隐藏起来,调用的时候只会调用派生类中的成员。
如果要调用基类的同名成员,可以用以下方法:
输出:
10
4
记得这里是在类外访问,而a在基类中是public,所以继承方式应该为public,使得a在派生类中仍然为public,在类外可以访问。
感兴趣的读者可以调试运行一下本文实例,加深印象的同时还会有新的收获。
c语言中public 用法,深入理解C++中public、protected及private用法相关推荐
- c语言private用法,深入理解C++中public、protected及private用法
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及pri ...
- 深入理解C++中public、protected及private用法
深入理解C++中public.protected及private用法 这篇文章主要介绍了C++中public.protected及private用法,对于C++面向对象程序设计来说是非常重要的概念,需 ...
- python语言strip的作用_Python语言中的strip()的理解
本文主要向大家介绍了Python语言中的strip()的理解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在看到Python中strip的时候产生了疑问 strip() 用于移 ...
- C++中public、protected及private用法
转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容 ...
- 转载——C语言中float,double类型,在内存中的结构(存储方式)
最近在做一个数据格式分析和转换的项目,第一次接触底层的二进制代码存储,看的一头雾水,看到这个帖子后对于在Windows系统下数据的存储方式有了更多的了解,将原文分享一下: 原文地址为http://ww ...
- 在c语言中char型数据在内存中的储存形式为什么
在c语言中char型数据在内存中的储存形式为"ASCII码".在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码 ...
- 在c语言中 char型数据在内存中的存储形式是,在c语言中char型数据在内存中的存储形式是什么?...
在c语言中char型数据在内存中的存储形式是ASCII码.在C语言中,char型数据是将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单 ...
- 素数在c语言表达能力,巧用C语言中的Continue语句解决数论中的问题
.#0 福建电脑!""#年第$%期 巧用!语言中的!"#$%&'(语句解决数论中的问题 杨爱梅 !河南工业大学河南郑州"#$$#%& !摘要!运 ...
- C语言中的void的理解
1 初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.voi ...
最新文章
- mysql 5.6 binlog_format_ROW 格式binlog 在MySQL5.6上的数据恢复实验
- cpc卡内计费信息异常包括_抖音CPC是什么?广告的优势在哪?抖音CPC广告转化率高吗?...
- oracle 数据导入导出
- 【PP操作手册】计划订单转生产订单
- python 3.4 vc++编译配置_VS2013+OpenCV3.4.2编译
- Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg)
- zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?
- 解决Firefox已阻止运行早期版本Adobe Flash
- DyFPN:浙大华为诺亚西湖大学等提出用于目标检测的动态特征金字塔,减少40%的FLOPs!...
- 搜狗2011笔试题+答案解析
- Axios中无法运行 json-server【已解决】
- python一共多少模块,python常见模块有哪些
- 用java写布尔矩阵奇偶性
- 使用MapReduce计算Pi
- IDEA谷歌翻译插件提示:更新 TKK 失败,请检查网络连接
- Windows2003 3389端口修改
- 子平真诠释疑笔记(六)
- 鸿蒙OS可以装电脑吗,华为的鸿蒙系统可以用在电脑上吗?
- google instant
- 通过python实现乘法口诀
热门文章
- 一方库,二方库,三方库指的是什么?
- mana wifi_在IBM Security Policy Manager 7.1中使用Access Manager凭证
- 如何防止中国菜刀后门泄露webshell地址
- matlab中如何画隐函数的图像
- 论文阅读笔记 | 三维目标检测——Complex-YOLO算法
- 单总线编程介绍(用于DS18B20)
- D001.1 Window7系统上Centos7的安装
- 盛辉SG90舵机 51单片机PWM控制程序 手机屏幕触控
- 【Linux】主函数的三个形参
- 【linux】安装Linux的交叉编译工具链