zoukankan      html  css  js  c++  java
  • 纯虚函数_抽象类

    解耦合 和 模块的划分
    c++没有接口的概念  但可以使用纯虚函数(抽象类)实现接口的功能

    纯虚函数和抽象类
    纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本
    纯虚函数为各派生类提供一个公共界面(接口的封装和设计,软件的模块功能更划分)


    纯虚函数说明形式:
    virtual 类型 函数名(参数表)= 0;


    含有纯虚函数的基类 称为抽象类。

    class shape
    {
        point center;
    public:
        virtual void rotate(int)=0;
        virtual void draw()=0;
        void move(point p)
        {
              center=p;
              draw();
        }
    }    

    类shape包含纯虚函数,就是抽象类

    shape x; //error,抽象类不能建立对象
    shape*p; //ok,可以声明抽象类指针
    shape f(); //error,抽象类不能作为返回类型
    void g(shape); //error,抽象类不能作为参数类型
    shape& h(shape&) //ok,可以声明抽象类的引用

    子类继承 抽象类 并实现其中的 virtual函数后,子类就可以实例化一个对象
    将子类的地址给 抽象类的指针,就可用抽象类(父类)指针调用子类相应的函数(即在抽象类中的虚函数在子类中的实现)

    void objplay(shape* base) //产生多态
    {
        base->draw();
    }
        area c1(1,2);
        square c2(2,3);
        objplay(&c1);
        objplay(&c2);

    多继承可以用,但规范的用法是一个正常父类,其余父类均为抽象类
    几个抽象类中只有可以有相同的纯虚函数,子类需要将不重复的纯虚函数全部实现一遍。
    将子类对象赋值给接口指针实现多态

    #prama once //可以保证头文件只包含一次

    注入  使用框架将任务实现传入框架

    控制反转 回调函数


    MVC

    C:控制(主框架) M:模型(厂商实现) V:视图(主程序测试程序)

  • 相关阅读:
    csrf攻击实例
    《四 数据库连接池源码》手写数据库连接池
    《四 spring源码》手写springmvc
    spring和springmvc是单例还是多例
    redis集群设置密码
    mongodb3.6集群搭建:分片集群认证
    mongodb3.6集群搭建:分片+副本集
    Mongo 3.6.1版本Sharding集群配置
    windows计划任务
    Redis slowlog慢查询
  • 原文地址:https://www.cnblogs.com/Lunais/p/5697033.html
Copyright © 2011-2022 走看看