7-1 抽象基类Shape派生3个类 (20分)
声明抽象基类Shape,由它派生出三个类,圆形Circle,矩形Rectangle,三角形Triangle,用一个函数输出三个面积。
在一行中依次输入5个数,圆的半径,长方形的高和宽,三角形的高和底,中间用空格分隔
圆的面积,长方形的面积,三角形的面积,小数点后保留2位有效数字,每个面积占一行。
在这里给出一组输入。例如:
3 3 4 3 4在这里给出相应的输出。例如:
28.27 12.00 6.00代码实现:
#include<iostream> using namespace std; class Shape { public: Shape() { } virtual double Printf()=0; }; class Circle:public Shape { private: double r; public: Circle(double r_):r(r_) { } virtual double Printf() { return 3.14*r*r; } }; class Rectangle:public Shape { private: double a,b; public: Rectangle(double a_,double b_):a(a_),b(b_) { } virtual double Printf() { return a*b; } }; class Triangle:public Shape { private: double n,m; public: Triangle(double n_,double m_):n(n_),m(m_) { } virtual double Printf() { return 0.5*n*m; } }; int main() { double a,b,c,d,e; cin>>a>>b>>c>>d>>e; Triangle t1(d,e); Rectangle t2(b,c); Circle t3(a); Shape *p1=&t3;//重点!!! Shape *p2=&t2; Shape *p3=&t1; printf("%.2f\n",p1->Printf()); printf("%.2f\n",p2->Printf()); printf("%.2f\n",p3->Printf()); return 0; }