C++学习总结_4

继承

继承(class 子类(派生类) :继承方式(public/private/protect) 父类(基类))

    类与类之间存在上下级关系

    下级除了有上级的共性,还有自己的特性

    继承的好处:减少代码重复性


三种继承方式

    public:    公共继承    //不变
    private:    私有继承    //全部变成私有权限
    protected: 保护继承    //全部变成保护权限
                            //子类无法访问父类的私有成员


    保护权限和私有权限的区别

        在继承中:
        //子类可以访问父类的保护权限
        //但是不能访问父类的私有权限


构造和析构的顺序

    先构造父类再构造子类
    先析构子类再析构父类


子类与父类的同名成员

    默认使用子类成员
    使用父类成员需要 子对象名 + 父类 + 作用域限定符 + 同名成员


多继承

    class A :public B,C{};


菱形继承(钻石继承)

    class A{};
    class B :public A{};
    class C :public A{};
    class D :public B,C{};

    菱形继承会有二义性(继承混乱)

虚继承(virtual)

    class A{};(虚基类)
    class B :/*virtual*/ public A{};
    class C :/*virtual*/ public A{};
    class D :public B,C{};

    此时class D直接继承class A;

    虚继承(virtual)时创建了虚指针和虚函数表格
    虚函数表格记录了动物类的地址
    菱形继承类继承时也会继承到虚指针,虚指针指向的虚函数表格

    尽量避免多继承和菱形继承的出现


多态(多种状态)

什么是多态?

    静态多态:函数重载、运算符重载(并不存在同名函数,在编译时将函数名重写)

        //在编译阶段确定多态


    动态多态:虚函数

        //代码组织结构清晰
        //可读性强
        //利于后期维护


函数重写

    函数的返回值,函数名,参数,参数个数都相同时
    子类重写父类

    //父类的指针或者引用指向子类的对象时,子类重写父类的虚函数(使用虚函数或函数重写

    0在父类和子类的同名函数前加/*virtual*/
    1子类的虚函数前可以省略/*virtual*/
    2子类的虚函数后可以写/*overrid*/

    当有父类指针或引用指向子类对象时,通过


纯虚函数和抽象类

    纯虚函数:只是给子类的虚函数提供了接口
    virtual void whoAmI() = 0;


    抽象类:当类中有纯虚函数时,该类也成为抽象类
    抽象类不能实例化对象
    当父类是纯虚函数时,子类必须重写纯虚函数,否则子类也是抽象类

虚析构

    在析构函数前加/*virtual*/关键字


纯虚析构

    virtual ~析构函数名()= 0;
    纯虚析构函数一定要在类外定义
    拥有纯虚析构函数的类也,是抽象类


简单工厂模式

    按照设计图纸生产处一些具有相同特征的产品,由一个工厂对其进行生产

    角色:总设计图、产品、工厂

    优点:

    缺点:更改产品时函数也要修改

          工厂类是整个项目的核心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值