目录

​一、定义​​​


​二、引入原因​​​


​三、相似概念​




​编辑本段​​一、定义


纯​​虚函数​​是一种特殊的虚函数,它的一般格式如下:


class <类名>


{


virtual <类型><函数名>(<参数表>)=0;



};


在许多情况下,在​​基类​​中不能对​​虚函数​​给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的​​派生类​​去做。这就是纯​​虚函数​​的作用。


纯​​虚函数​​可以让类先具有一个操作名称,而没有操作内容,让​​派生类​​在继承时再去具体地给出定义。凡是含有纯​​虚函数​​的类叫做​​抽象类​​。这种类不能声明对象,只是作为​​基类​​为​​派生类​​服务。除非在​​派生类​​中完全实现​​基类​​中所有的的纯​​虚函数​​,否则,派生类也变成了​​抽象类​​,不能实例化对象。


​编辑本段​​二、引入原因


1、为了方便使用​​多态​​特性,我们常常需要在​​基类​​中定义​​虚拟函数​​。


2、在很多情况下,​​基类​​本身生成对象是不合情理的。例如,动物作为一个​​基类​​可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。


为了解决上述问题,引入了纯​​虚函数​​的概念,将函数定义为纯​​虚函数​​(方法:virtual ReturnType Function()= 0;)。若要使​ ​派生类​​为非​​抽象类​​,则​​编译器​​要求在派生类中,必须对纯​​虚函数​​予以重写以实现​​多态性​​。同时含有纯​​虚函数​​的类称为​​抽象类​​,它不能生成对象。这样就很好地解决了上述两个问题。


​编辑本段​​三、相似概念


1、​​多态性​


指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种​​多态性​​:编译时​​多态性​​,​​运行时多态性​​。


a.编译时多态性:通过​​重载函数​​实现


b ​​运行时多态性​​:通过​​虚函数​​实现。


2、​​虚函数​


虚函数是在​​基类​​中被声明为virtual,并在​​派生类​​中重新定义的成员函数,可实现成员函数的动态​​重载​


3、​​抽象类​


包含纯​​虚函数​​的类称为​​抽象类​​。由于​​抽象类​​包含了没有定义的纯​​虚函数​​,所以不能定义抽象类的对象。


程序举例:


​基类​​:


class A


{


public:


A();


virtual ~A();


void f1();


virtual void f2();


virtual void f3()=0;


};


子类:


class B : public A


{


public:


B();


virtual ~B();


void f1();


virtual void f2();


virtual void f3();


};


​主函数​​:


int main(int argc, char* argv[])


{


A *m_j=new B();


m_j->f1();


m_j->f2();


m_j->f3();


delete m_j;


return 0;


}


f1()是一个隐藏,关于函数的隐藏,可以参考其它词条.


调用m_j->f1();会去调用A类中的f1(),它是在我们写好代码的时候就会定好的.


也就是根据它是由A类定义的,这样就调用这个类的函数.


f2()是重写(覆盖).


调用m_j->f2();会调用m_j中到底保存的对象中,对应的这个函数.这是由于new的B


对象.(调用​​派生类​​的f2())


f3()与f2()一样,只是在​​基类​​中不需要写函数实现.