纯虚函数 注意有红色的部分

本文通过具体的代码示例介绍了C++中虚函数和纯虚函数的应用。包括如何定义虚函数作为基类接口,并在派生类中实现具体功能;以及如何使用纯虚函数创建抽象基类来强制派生类实现特定的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚函数的例子。
#include  <iostream.h>
class figure {                                 //定义一个公共基类
      protected:
          double  x,y;
      public:
          figure(double a, double b)  { x=a; y=b; }
          virtual void show_area()  //定义一个虚函数,作为界面接口
       { cout<<"No area computation defined for this class./n"; }
};
class  triangle:public  figure{      //定义派生类三角形
       public:
           triangle(double a, double b):figure(a,b)  {    };
        void show_area()         //虚函数重新定义,求三角形的面积
        {   cout <<"三角形的高="<< x <<" 三角形的底="<<y<<endl; 
             cout<<"三角形的面积="<< x*y*0.5<<endl;
        }
};
class  square:public  figure{         //定义派生类矩形
       public:
           square(double a, double b):figure(a,b)  {    };
           void show_area()         //虚函数重新定义,求矩形的面积
           {  cout <<"矩形的长="<< x <<"    矩形的宽="<<y<<endl; 
               cout<<"矩形的面积="<< x*y<<endl;
           }
};
class  circle:public  figure{         //定义派生类圆
       public:
           circle(double a):figure(a,a)  {    };
           void show_area()         //虚函数重新定义,求圆的面积
           {  cout <<"圆的半径="<< x; 
               cout<<"    圆的面积="<< x*x*3.1416<<endl;
           }
};
void  main()
{ figure  *p;                              //定义基类的指针 p
    triangle  t(10.0,6.0);            //定义三角形类对象 t
    square   s(10.0,6.0);           //定义矩形类对象 s
    circle c(10.0);                        //定义圆类对象 c
    p=&t;
    p->show_area();                 //计算三角形面积
    p=&s;
    p->show_area();                 //计算矩形面积
    p=&c;
    p->show_area();                 //计算圆面积

}
纯虚函数的例子。
#include<iostream.h>
class circle{
       protected:
               int r;
       public:
               void setr(int x)   {r=x;}
               virtual  void show(  )=0;                   //纯虚函数
};
class area:public circle {
          public:
               void show (  )                       //重新定义虚函数 show (  )
                {cout<<"面积是:"<< 3.14* r* r<<endl;}
};
class perimeter:public circle{
           public:
               void show (  )                       //重新定义虚函数 show (  )
                {cout<<"周长是:"<<2*3.14*r<<endl;}
};
void main(  )
{   circle      *ptr;
     area ob1;            perimeter ob2;
     ob1.setr(10);      ob2.setr(10);
     ptr=&ob1;           ptr->show(  );
     ptr=&ob2;           ptr->show(  );
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值