• MOOC C++笔记(五):继承


    第五周:继承

    继承和派生的基本概念

    继承:在定义一个新的类B时,如果该类与某个个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)。
    派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。
    派生类一经定义后,可以独立使用,不依赖于基类。
    派生类拥有基类的全部成员函数和成员变量,不论是private、prtected、public。
    注意:在派生类的各个成员函数中,不能访问基类中的private成员。

    派生类的写法

    class 派生类名: public 基类名 { };
    关于继承派生形式可以为private和protected,详见:C++ private和protected派生(私有和保护派生)

    派生类对象的体积

    等于基类对象的体积,再加上派生类对象自己的成员变量的体积。在派生类对象中,包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员变量之前。

    继承关系和复合关系

    继承:“是”的关系。
    基类A,B是基类A的派生类。
    逻辑上要求:“一个B对象也是一个A对象”。
    复合:“有”关系。
    类C中“有”成员变量k,k是类D的对象,则C和D是复合关系
    一般逻辑上要求:“D对象是C对象的固有属性或组成部分”。

    覆盖和保护成员

    覆盖

    派生类可以定义一个和基类成员同名的成员,这叫覆盖。在派生类中访问这类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。
    (注意尽量不要再派生类定义同名的成员变量)

    类的保护成员

    基类的private成员:可以被下列函数访问
    1.基类的成员函数
    2.基类的友员函数
    基类的public成员:可以被下列函数访问
    1.基类的成员函数
    2.基类的友员函数
    3.派生类的成员函数
    4.派生类的友员函数
    5.其他的函数
    基类的protected成员:可以被下列函数访问
    1.基类的成员函数
    2.基类的友员函数
    3.派生类的成员函数可以访问当前对象的基类的保护成员

    派生类的构造函数

    在创建派生类的对象时,需要调用基类的构造函数:初始化派生类对象中从基类继承的成员。在执行一个派生类的构造函数之前,总是先执行基类的构造函数。
    派生类的析构函数被执行时,执行完派生类的析构函数后,自动调用基类的析构函数。

    封闭派生类对象的构造函数执行顺序

    在创建派生类的对象时
    1.先执行基类的构造函数,用以初始化派生类对象从基类继承的成员;
    2.再执行成员对象类的构造函数,用以初始化派生类对象中成员对象。
    消亡时析构与构造函数相反。

    public继承的复制兼容规则

    1.派生类的对象可以赋值给基类对象(保留派生类中的基类内容)
    2.派生类对象可以初始化基类引用
    3.派生类对象的地址可以赋给基类指针(这点很重要,可以用此来实现多态)
    如果派生方式是private或者protected,则上述三条不可行。

    直接基类和间接基类

    类A派生类B,类B派生类C,类C派生类D,。。。
    类A是类B的直接基类
    类B是类C的直接基类,类A是类C的间接基类
    类C是类D的直接基类,类A、B是类D的间接基类
    在声明派生类时,只需要列出它的直接基类
    派生类沿着类的层次自动向上继承它的间接基类
    派生类的成员包括
    1.派生类自己定义的成员。
    2.直接基类中的所有成员。
    3.所有间接基类的全部成员。

  • 相关阅读:
    Vue watch computed和watch的区别
    Vue MVVM与数据代理
    Vue 计算属性
    Vue 数据绑定 单向绑定与双向绑定
    Vue 过滤器
    Vue class样式与style样式
    Vue 内置指令
    Leaflet中通过setZIndex实现图层层级控制
    Leaflet中使用leaflet.browser.print插件实现导出图片
    Vue+Openlayers+elcheckboxgroup实现多选图层的显示与隐藏
  • 原文地址:https://www.cnblogs.com/z-y-k/p/11568900.html
Copyright © 2020-2023  润新知