纯虚函数_抽象类

解耦合 和 模块的划分
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:视图(主程序测试程序)

 

posted @ 2016-07-22 20:27  Lunais  阅读(314)  评论(0编辑  收藏  举报