2、定义一个基类Shap,包含一个求面积的纯虚函数,由Shap类派生圆类、矩形类和三角形类,定义各自的数据成员、构造函数、求面积函数和求周长函数。
编写主函数,定义各类对象及基类指针,通过基类指针调用求面积和周长函数,计算各对象的面积和周长。
#include<iostream.h>
#include<Cmath>
class Shape
{public: virtual double mianji() const=0;};
class Yuan:public Shape
{public: Yuan(double r):radius(r){}
double mianji() const
{cout<<"圆的面积为:"<<3.14159*radius*radius<<endl;
return 0;}
void Yuan::zhouchang()
{cout<<"圆的周长为:"<<2*3.14159*radius<<endl;}
private: double radius;};
class Juxing:public Shape
{public: Juxing(double l,double w):length(l),width(w){}
double mianji() const
{cout<<"矩形面积为:"<<length*width<<endl;
return 0;}
void Juxing::zhouchang()
{cout<<"矩形周长为:"<<2*(length+width)<<endl;}
private: double length,width;};
class Sanjiaoxing:public Shape
{public: Sanjiaoxing(double i,double j,double k):a(i),b(j),c(k){}
double mianji() const
{double p;
p=(a+b+c)/2;
cout<<"三角型面积为:"<<sqrt(p*(p-a)*(p-b)*(p-c))<<endl; //海伦公式求三角型面积
return 0;}
void Sanjiaoxing::zhouchang()
{cout<<"三角形周长为:"<<a+b+c<<endl;}
private: double a,b,c;};
int main(void)
{Shape *p=NULL;
double e,f,g,h,m,n;
cout<<"请输入圆的半径,矩形的长,宽和三角形的三边(满足三角形法则,并以空格为间隔)<<\n";
cin>>e>>f>>g>>h>>m>>n;
Yuan yuan(e);
Juxing juxing(f,g);
Sanjiaoxing sanjiaoxing(h,m,n);
p=&yuan;
p->mianji();
yuan.zhouchang();
p=&juxing;
p->mianji();
juxing.zhouchang();
p=&sanjiaoxing;
p->mianji();
sanjiaoxing.zhouchang();
system("pause");
return 0;}。