c++学习笔记_5
前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写
继承
继承和派生的基本概念
- c++中的继承和派生是同一概念,其基本定义和用法与java中的类似
- 与java中相对应的,父类叫做基类,子类叫做派生类
- 写法: “class 派生类名: public 基类名”
- 派生类对象的内存空间中包含着基类对象,且基类对象的储存位置位于派生类对象新增的成员变量之前。
继承关系和复合关系
较简单,略。
覆盖和保护成员
- 覆盖:定义:派生类中可以定义一个和基类成员同名的成员。使用作用域符号
::可以访问基类中的同名成员,不使用作用域符号则访问派生类中成员。 - 基类的protected成员可被下列函数访问:
基类的成员函数
基类的友元函数
派生类的成员函数可访问当前对象的基类的保护成员(这一点是相对于private多出来的)
派生类的构造函数
- 派生类的参数初始化方法:调用基类的构造函数。在执行一个派生类构造函数之前,总是先执行基类的构造函数。
- 具体写法:有两种,第一是显示方式,在派生类的构造函数的初始化列表中,直接调用基类的构造函数;第二是隐式方式,如果省略不写基类构造函数,则会自动调用基类的无参构造函数(没有无参构造函数时会编译出错)。
- 派生类的析构函数被执行时,执行完派生类的析构函数后,自动调用基类的析构函数。
- 封闭派生类对象的构造函数执行顺序:先执行基类的,再执行成员对象的,最后执行派生类自己的。派生对象消亡时顺序恰好相反。
公有继承的赋值兼容规则
规则大体上同java。
- 派生类对象可以赋值给基类对象。
- 派生类对象可以初始化基类引用。
- 派生类对象的地址可以赋值给基类指针。
(派生方式不是public,而是private或者protected,则上述规则不成立)
c++学习笔记_5的更多相关文章
- PythonI/O进阶学习笔记_5.python的set和dict
前言: 我一直觉得对我来说学习知识很忌讳不系统.本篇内容与上一篇 自定义序列类是有联系的. 上一篇比较通范的了解了序列类的一些协议和特性,并且有些list的内容.这篇更加具体到set和dict这两个序 ...
- Java编程思想学习笔记_5(IO流)
一.用DataInputStream读取字符 可以使用available方法查看还有多少可供存取的字符.示例如下: public class Test1 { public static void ma ...
- Hibernate 马士兵 学习笔记 (转)
目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...
- matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图
一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- Learning hard 学习笔记
第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- github下载慢的问题
1. 修改HOSTS文件:在“C:\Windows\System32\drivers\etc” 下的HOSTS文件,添加以下地址: 151.101.44.249 github.global.ssl. ...
- C# 任务、线程、同步(五)
1.数据流使用 TPL Data Flow 类库 class Program { static void Main(string[] args) { // ActionBlock(); // Sou ...
- 签名/加密_Java_hutool( 01 代码实现 )
本文档不讲解签名/加密相关的理论知识, 仅列出通过Java实现的方式. 待处理: Hutool含有很多工具的封装, 有时间需要好好研究一下(https://blog.csdn.net/moshowga ...
- java web课程管理系统开发实例(从数据库连接到代码)
以下是几个简单知识: JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于配 ...
- include指令与jsp:include动作标识的区别
include指令: 文件包含指令include是jsp的另一条指令标识.通过该指令可以在一个jsp页面中包含另一个jsp页面.不过该指令是静态包含,也就是说被包含文件中所有内容会被原样包含到jsp页 ...
- DML:增、删、改表中数据
1. 添加数据 (1) 常规添加 INSERT INTO 表名(列名,列名,列名) VALUES(值,值,值); (2) 简化添加 INSERT INTO 表名 VALUES(值,值,值); 规则: ...
- jdbc相比于hibernate的弊端
1.编程人员必须既懂Java语言,又懂SQL语言,才能编写数据库访问代码.(感觉用不用hibernate,SQL都要会呀) 2.程序代码中嵌入大量字符串形式的SQL语句,降低了程序代码的可读性. 3. ...
- IDEA配置Hadoop开发环境&编译运行WordCount程序
有关hadoop及java安装配置请见:https://www.cnblogs.com/lxc1910/p/11734477.html 1.新建Java project: 选择合适的jdk,如图所示: ...
- kotlin中类型检查和类型转换
is 和!is操作符,可以在运行时检查一个对象与一个给定的类型是否一致,或者使用与它相反的!is操作符 fun main(arg: Array<String>) { var a :Any= ...
- Tomca的启动与关闭
点击startup.bat启动,遇到一闪而过的问题,可能尚未配置JAVA_HOME 8080端口被占用导致启动失败 关闭Tomcat的三种方式 * 点击x (不推荐) * 双击shutdown.bat ...