• C++ 继承与派生


    继承:在一个已经存在的类的基础上建立一个新的类,这个新类从已有的的类哪里获得已有的特性

    派生类:继承了已有类的全部成员数据和成员函数

    继承又有单继承和多重继承的方式

    关系:派生类是基类的具体化,基类是派生类的抽象

    继承方式:class 派生类名:继承方式 基类名    //如果不写继承方式则默认为private

        {

          派生类中新增加的成员;

        };

    派生类的构成:

    1. 从基类接收成员:接收基类的全部数据成员(不包括构造函数和析构函数)不可选择接收的数据
    2. 调整从基类接收的成员:在派生类中可以实现同名覆盖(参数表)
    3. 声明派生类新增加的成员

    派生类中成员的访问属性

    1. 公共继承:基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,不可访问。
    2. 私有继承:基类的公用成员和保护成员在派生类中成了派生类的私有成员,其私有成员仍为基类私有。
    3. 受保护的继承:基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。保护成员的意思是,不能被外界引用,但可以被派生类的成员引用。

      私有成员在派生类中都成为不可访问的属性,派生类中的一切成员均无法访问它们。

    多级派生时的访问属性:直接派生,间接派生

    派生类的构造函数和析构函数:

    1. 构造函数的主要作用就是对数据成员的初始化。
    2. 构造和析构函数是不能被继承的需要在执行派生类的构造函数时,调用基类的构造函数

    派生类构造函数的一般形式:派生类构造函数名(总参数表):基类构造函数名(参数表)

                  {

                    派生类中新增加的数据成员初始化;

                  }

              如: Teacher_Cadre(string nam, int a, char s, string add, string p,string tit, string po,float w):Teacher(nam,a,s,add,p,tit),Cadre(nam, a, s, add, p, po)
                  {
                    wages = w;
                  }

    有子对象的派生类的构造函数:对象中的对象

                Student s1;      //Student是已声明的类名,s1是Student类的对象

                  派生类构造函数名(总参数表):基类构造函数名(参数表),子对象名(参数表)

                  {

                    派生类中新增加的数据成员初始化;

                  }

    多重继承派生类的构造函数:调用基类的构造函数的顺序是按照声明派生类时的基类出现的顺序

    虚基类:在继承间接共同基类时只保留一份成员,在指定继承方式时声明

    class A

    {...};

    class B:virtual public A

    {...};

    class C:virtual public A

    {...};

    初始化问题

          class A

          {

            A(int i){};

            ...};

          class B:virtual public A

          {

            B(int i):A(n){};

           ...};

          class C:virtual public A

          {

            B(int i):A(n){};

           ...};

  • 相关阅读:
    多表查询 left join
    对JS关于对象创建的几种方式的整理
    常见正则表达式
    spring
    富文本编辑器
    Struts2快速入门
    一个MySql Sql 优化技巧分享
    maven
    day3
    Spring MVC
  • 原文地址:https://www.cnblogs.com/hly97/p/11958762.html
Copyright © 2020-2023  润新知