• 为什么引入继承派生

    • 代码重用扩充
    • 软件的复用
    • 层次分类
  • 派生类的语法定义
    • class 派生类名(1):继承方式(2)   基类名(3){

派生成员声明;}

*(1)一个派生类——>多个基类,多继承。 只有一个基类,单继承。

(2)继承方式:关键字3个:public, protected,private

public: 公有成员和保护成员访问属性在派生类中不变,同:基类的私有成员不能直接访问。

protected: 公有成员和保护成员访问属性在派生类变成保护成员。同:基类的私有成员不能直接访问。

private: 基类中的公有成员和保护成员都成了派生类的私有成员,同:基类的私有成员不能直接访问。(作用:中止基类继续派生,qustion:1.基类的公共成员还能不能被对象访问?2.私有成员和保护成员有什么区别?//私有成员不能被继承,也不能被外部函数访问,保护可以被继承,但是外部函数不能访问,派生类的对象可以直接访问保护函数,基类对象不能直接访问)

  • 访问与标识

    • (1) 当派生类与基类有同名成员时: 若未明确指出,则通过派生类对象使用的是派生类中的同名成员(同名覆盖原则)若要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名及作用域分辨符限定

      • (2) 多个基类存在同名成员时,如果通过派生类对象访问存在二义性,也应使用基类名及作用域分辨符限定

  • 派生类的构造函数
      • 语法:

        派生类名::派生类名(所有形参) : 基类名1(基类1形参), … 基类名n(基类n形参), 内嵌对象名1(内嵌对象1形参), … { 派生类新增成员的初始化; }

      • 调用顺序

        1.首先,调用基类构造函数。 多个基类之间,按照它们被继承时声明的顺序 2.其次,调用内嵌对象的构造函数。多个内嵌对象之间,按照它们在类中声明的顺序.  3 最后,调用派生类的构造函数。

  • 解析函数
      • 当派生类对象的生命期结束时: 编译器会自动调用派生类的析构函数和基类的析构函数           析构函数的调用顺序与构造函数相反

  • 复制构造函数
      • 类型兼容规则
  • 类型兼容原则
      • 一个公有派生类的对象在使用上可以被当作基类的对象,反之,不可以。

  • 虚基表
      • ① 主要用来解决多重继承时可能发生的对同一基类继承多次而产生的二义性问题      ② 为派生类提供唯一的基类成员,而不重复产生多次拷贝

    • 定义

      • class Base1:virtual public Base0 { public: int var1; void fun1(); };

      • 在第一级继承时就要将共同基类设计为虚基类

【C++ 继承与派生/知识梳理】的更多相关文章

  1. C/C++基础知识总结——继承与派生

    1. 类的继承与派生 1.1 派生类的定义 (1) 定义规范 class 派生类名: 继承方式 基类1名, 继承方式 基类2名... { ...派生类成员声明; }; (2) 从以上形式上看可以多继承 ...

  2. C/C++编程笔记:C++入门知识丨继承和派生

    本篇要学习的内容和知识结构概览 继承和派生的概念 派生 通过特殊化已有的类来建立新类的过程, 叫做”类的派生”, 原有的类叫做”基类”, 新建立的类叫做”派生类”. 从类的成员角度看, 派生类自动地将 ...

  3. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  4. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

  5. 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

    描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...

  6. C#基础知识梳理索引

    C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...

  7. Linux基础知识梳理

    Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...

  8. 【C++ 实验六 继承与派生】

    实验内容 1. 某计算机硬件系统,为了实现特定的功能,在某个子模块设计了 ABC 三款芯片用于 数字计算.各个芯片的计算功能如下: A 芯片:计算两位整数的加法(m+n).计算两位整数的减法(m-n) ...

  9. C++复习:继承与派生

    1继承概念 面向对象程序设计有4个主要特点:抽象.封装.继承和多态性.说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础. 要 ...

随机推荐

  1. selenium之 文件上传所有方法整理总结【转】

    本文转自:https://blog.csdn.net/huilan_same/article/details/52439546 文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家 ...

  2. Android:困扰了我一个晚上的问题 Failed to resolve: com.android.support:recyclerview-v7.25.3.1

      为了解决这个问题,做了各种尝试: 1)重装sdk: 2)重装android studio: 最终发现是一个标点符号搞错了,如下:   而且通过查找这个问题,了解到: 1)sdk路径,<use ...

  3. Pandas 使用笔记

    创建空的数据框: import pandas as pd df = pd.DataFrame(columns = ["ebayno", "p_sku", &qu ...

  4. [转] 阿里研究员谷朴:API 设计最佳实践的思考

    API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...

  5. [MHA]master_ip_failover 测试可以使用的IP 地址切换脚本

    #!/usr/bin/env perluse strict;use warnings FATAL => 'all'; use Getopt::Long; my (    $command,    ...

  6. WPF相关网址

    5.http://code.msdn.microsoft.com 4.仿真模拟多点触控:http://tinyurl.com/yawwhw2http://multitouchvista.codeple ...

  7. Windows Server 2008 IIS安装FTP及端口配置

    添加角色IIS,选择上FTP服务 打开IIS,右击网站,添加FTP站点 允许访问的指定用户,必须是Windows系统真实存在的用户,为了安全起见,此用户只赋予user组即可,不能赋予远程桌面权限 如果 ...

  8. 你可能不知道的IDEA高级调试技巧

    一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可 ...

  9. Js 跳出两级循环的方法

    做过一个复杂的验证方法,需要两层each验证之后反正报错的信息.因为双重循环的问题,纠结了很久. /** * 验证input 的值 是否输入 flg:验证成功 false:验证失败 */ functi ...

  10. rm -rf python 实现 v0.1

    #coding=utf- import os def join(arr,join_falg): res = "" for a in arr: res += a+join_falg ...