C++动态绑定和静态绑定

动态绑定和静态绑定

静态绑定是编译期间就可以确定的类型

Base *ctx = new Base(); //ctx的类型只能是Base

动态绑定则只能在运行时确定

Dev是Base的派生类
Base *ctx = new Dev(); //ctx的静态类型是Base 动态类型却是Dev

用C++描述轿车和卡车 可以抽象出这样的模型
抽象的车 : 需要加油
汽车 : 需要加93号汽油
卡车 : 需要加柴油

汽车和卡车都是抽象的车的实现 在对外提供接口时 当然提供抽象的车作为接口
外部使用者只需要知道抽象车的概念 明确提供一个加油的接口 至于加什么油 不需要关心

抽象的车
class base {
public:
      virtual void addOil() {
          //加油
      }
};

轿车
class car  : public base{
public:
    void addOri() {
        //加汽油
    }
};

汽车
class DieselCar : public base {
public:
    void addOri() {
          //加柴油
    }
}

int main() {
    Base *a = new car();  //静态类型Base 动态类型car
    Base *b = new DieselCar(); //静态类型Base 动态类型DieselCar
    a->addOri();
    b->addOri();
    delete a;
    delete b;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容