C++ -- 接口与实现

    xiaoxiao2021-03-25  64

    公有继承: Interface And Implementation

    三种继承的方式:

    pure virtual function 只继承基类的接口,要在派生类中重写该函数的实现。至于是在子类中实现还是子类的子类中实现都无所谓,关键是需要实例化的类就需要实现,不然对象是无法创建的。

    virtual function 普通虚函数对应于基类是有缺省的实现的,派生类继承过来的函数既包含接口又包含缺省的实现。派生类可以选择是否重写缺省的实现。同时继承接口和缺省实现是一件有风险的事情。因为或许你的某个派生类忘记重写该虚函数,那调用的时候就是调用的缺省的实现。

    两个解决办法: 1. pure virtual function + Default Realize。派生类只继承接口,想要使用缺省实现,必须显示调用 2. override 防止忘记, 强制重写该虚函数

    normal function 派生类继承了接口和强制实现。所以不需要在派生类中重写该函数。 不重写,调用的是父类的实现。重写,调用的是派生类的实现。

    有时候你会发现virtual function 和normal function 结果看,好像差不多。其实二者的区别需要从静态联编和动态联编这边分析。下次再说。

    转载请注明原文地址: https://ju.6miu.com/read-36269.html

    最新回复(0)