纯虚函数

来源:互联网 发布:linux snmp获取不到cpu 编辑:程序博客网 时间:2024/05/23 00:05

   在许多情况下,在基类中不能对虚函数给出有意义的定义,而把它说明为纯虚函数,它的定义留给该基类的派生类去做,所以,纯虚函数是一种特殊的虚函数。它的一般格式如下:

 class  类名

{

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

      ...

 };


例如,有如下程序:

#include <iostream>#include <math.h>using namespace std;class base{protected:    int x, y;public:    virtual void setx(int i, int j = 0)    {        x = i;        y = j;    }    virtual void disp() = 0;    //定义纯虚函数};class square : public base{public:    void disp()    {        cout << "x=" << x << ":";        cout << "x square = " << x*x <<endl;    }};class cube:public base{public:    void disp()    {        cout << "x=" << x << ":";        cout << "x square = " << x*x*x <<endl;    }};class chpow:public base{    void disp()    {        cout << "x=" << x << " y="<< y << ":";        cout << "pow(x,y) = " << pow(double(x),double(y))<<endl;    }};int main(){    base *ptr;    square B;    cube C;    chpow D;        ptr = &B;    ptr->setx(5);    ptr->disp();        ptr = &C;    ptr->setx(6);    ptr->disp();        ptr = &D;    ptr->setx(3,4);    ptr->disp();}

程序输出结果如下:


上述程序中,基类base说明了一个纯虚函数disp(),然后在base类的派生类square、cube和chpow中分别定义。该程序实现动态联编,因为disp()在运行时进行选择。

原创粉丝点击