前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写

继承

继承和派生的基本概念

  1. c++中的继承和派生是同一概念,其基本定义和用法与java中的类似
  2. 与java中相对应的,父类叫做基类,子类叫做派生类
  3. 写法: “class 派生类名: public 基类名”
  4. 派生类对象的内存空间中包含着基类对象,且基类对象的储存位置位于派生类对象新增的成员变量之前。

继承关系和复合关系

较简单,略。

覆盖和保护成员

  1. 覆盖:定义:派生类中可以定义一个和基类成员同名的成员。使用作用域符号::可以访问基类中的同名成员,不使用作用域符号则访问派生类中成员。
  2. 基类的protected成员可被下列函数访问:
    基类的成员函数
    基类的友元函数
    派生类的成员函数可访问当前对象的基类的保护成员(这一点是相对于private多出来的)

派生类的构造函数

  1. 派生类的参数初始化方法:调用基类的构造函数。在执行一个派生类构造函数之前,总是先执行基类的构造函数。
  2. 具体写法:有两种,第一是显示方式,在派生类的构造函数的初始化列表中,直接调用基类的构造函数;第二是隐式方式,如果省略不写基类构造函数,则会自动调用基类的无参构造函数(没有无参构造函数时会编译出错)。
  3. 派生类的析构函数被执行时,执行完派生类的析构函数后,自动调用基类的析构函数。
  4. 封闭派生类对象的构造函数执行顺序:先执行基类的,再执行成员对象的,最后执行派生类自己的。派生对象消亡时顺序恰好相反。

公有继承的赋值兼容规则

规则大体上同java。

  1. 派生类对象可以赋值给基类对象。
  2. 派生类对象可以初始化基类引用。
  3. 派生类对象的地址可以赋值给基类指针。
    (派生方式不是public,而是private或者protected,则上述规则不成立)

c++学习笔记_5的更多相关文章

  1. PythonI/O进阶学习笔记_5.python的set和dict

    前言: 我一直觉得对我来说学习知识很忌讳不系统.本篇内容与上一篇 自定义序列类是有联系的. 上一篇比较通范的了解了序列类的一些协议和特性,并且有些list的内容.这篇更加具体到set和dict这两个序 ...

  2. Java编程思想学习笔记_5(IO流)

    一.用DataInputStream读取字符 可以使用available方法查看还有多少可供存取的字符.示例如下: public class Test1 { public static void ma ...

  3. Hibernate 马士兵 学习笔记 (转)

    目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...

  4. matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  5. Learning hard 学习笔记

    第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什 ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. Python中的基本类型简介

    1.变量 变量不仅可以是数字,还可以是任意数据类型 命名规范:变量是用一个变量名表示,变量名必须是大小写英文.数字和下划线_的组合,且不能用数字开头 python中等号“=”是赋值语句,可以把任意数据 ...

  2. Shiro-Subject 分析(转)

    Subject反正就好像呈现的视图.所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager:可以把Subject认为是一个门面: ...

  3. HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    /* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...

  4. 出现错误时返回异常 MVC

    在使用MVC的时候,会出现异常提醒: 1,当在Controller出现错误的时候,我们可以直接返回,即return  view()返回视图. ViewBag.Msg("产品或赠品不存在&qu ...

  5. 关于class

    1.使用#include分离函数的定义与实现 c语言可以在xxx.h中定义函数,然后在xxx.cpp中实现函数: 在需要用到这些函数时,只要用#include引入xxx.h即可,这样就不用将所有代码全 ...

  6. 下拉框 显示name 隐藏code

    暂未做详细整理, 后期有机会完善 jsp 是否有效: <s:select id="queryIsValid" name="configBean.queryIsVal ...

  7. python pass del eval

    pass python中空代码块是非法的,解决的方法就是在语句块中加上一个pass语句 eval >>> eval("print('hellowrold')")h ...

  8. [USACO10HOL]赶小猪

    嘟嘟嘟 这题和某一类概率题一样,大体思路都是高斯消元解方程. 不过关键还是状态得想明白.刚开始令\(f[i]\)表示炸弹在点\(i\)爆的概率,然后发现这东西根本无法转移(或者说概率本来就是\(\fr ...

  9. 一个简单的puppeteer爬虫

    const puppeteer = require("puppeteer"); const path = require('path'); const pathToExtensio ...

  10. ajax与HTML5 history API实现无刷新跳转

    一.ajax载入与浏览器历史的前进与后退 ajax可以实现页面的无刷新操作,但是无法前进与后退,淡出使用Ajax不利于SEO.如今,HTML5让事情变得简单.当执行ajax操作时,往浏览器histor ...