美文网首页C/C++
C++动态绑定和静态绑定

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

作者: cx7 | 来源:发表于2019-01-11 20:48 被阅读0次

    动态绑定和静态绑定

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

    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;
    }
    

    相关文章

      网友评论

        本文标题:C++动态绑定和静态绑定

        本文链接:https://www.haomeiwen.com/subject/txbjkqtx.html