• 继承


    1.继承

      从一个已有的类的基础上创建一个新类,新类包含了已有类的所有成员,并且还增添了自己的成员。

      单重继承:生成的派生类只有一个基类

      多重继承:生成的派生类有两个或两个以上的基类

      (有的语言两种继承,如C++,有的语言只支持单重继承,如java,多重继承使用较少)

    2.派生类

      定义:

     class <派生类名><继承方式> <基类名>

    {

      <派生类新增成员说明>

    }

    3.基类成员在派生类中的访问权限

    不论哪种继承方式,派生类对象只能访问公有成员

    4.派生类的构造函数

    B(int i,int j,int k):A(i),aa(j)

    {

      b = k;

    }

    初始化列表中包括直接基类的构造函数、子对象、常数据成员

    当派生类构造函数中包含基类中带参数的构造函数时,基类构造函数一定要显示的写在成员初始化列表中

    当派生类构造函数中包含基类中默认构造函数时,该默认构造函数被隐含在派生类的构造函数中

    派生类构造函数的执行顺序;

    1)基类构造函数

    2)子对象的构造函数

    3)派生类的构造函数函数体

    5.派生类的析构函数

    5.派生类的析构函数

    由于析构函数都是没有参数的,因此在派生类的析构函数中隐含着直接基类的析构函数

    派生类析构函数的执行顺序

    1)派生类析构函数的函数体

    2)子对象所在类的析构函数

    3)直接基类中的析构函数

    析构函数执行顺序与构造函数执行顺序相反

    如果存在多个子对象,析构子对象的顺序与定义子对象的顺序有关,先定义的后析构,后定义的先析构

    6.子类型

    定义:当一个类型至少包含了另一个类型的所有行为,则称该类型是另一个类型的子类型

    在公有继下,派生类是基类的子类型

    子类型关系不可逆

    7.赋值兼容原则

    当A是B的子类型,即A公有继承B时

    1)A的对象可以赋值给B的对象

    2)A的对象可以给B的对象引用赋值

    3)A的对象地址值可以给B对象指针赋值

    7.多重继承

      定义:一个派生类有两个或两个以上的基类

      class D:public A,public B,public C

      {

       ... 

      };

    多个基类构造函数的执行顺序取决于定义派生类时规定的先后顺序,与派生类的成员初始化列表中顺序无关

    8.多重继承的二义性

    1)调用不同基类中的相同成员时可能出现二义性

      若两个相同的函数,一个出现在基类中,一个出现在派生类中,则派生类成员有支配基类成员的作用,故派生类成员有效

    2)访问共同基类的成员时可能出现二义性

    避免二义性的方法:类名限定

    <类名>::<成员名>

  • 相关阅读:
    Windows Server 2008 R2系统上安装SQLServer2012集群(简略)
    播放视频有沙沙的杂音怎么处理?
    合并两个表取数
    电脑下边的语言栏跑到左边了怎么办?
    一条SQL查出当月的每一天
    统一本地服务器名和计算机名
    一个奇葩的SQL
    Cent Os7.0安装MongoDB4.2.0
    MySQL 8.0.5开启远程连接
    MySQL系统函数及SQL开发中易犯错的点
  • 原文地址:https://www.cnblogs.com/syyy/p/6106349.html
Copyright © 2020-2023  润新知