寫一個程序,定義抽象基類Shape,由它派生出3個派生類,Cirle(圓形、Rectangle(矩形)、Triangle(三角形)。用一個函數printArea 分別輸出以上三者的面積,3個圖形的數據在定義對象時給定、ios
- #include<iostream>
- using namespace std;
- /*
- 圓面積S=3.14*r*r
- 矩形面積S=長*寬
- 三角形面積S=(底*高)/2
- */
- class Shape
- {
- public:
- virtual float area()const=0;
- };
- class Circle:public Shape
- {
- public:
- Circle(double a):r(a){}
- virtual float area()const{return 3.14*r*r;}
- private:
- double r;
- };
- class Rectangle:public Shape
- {
- public:
- Rectangle(double a,double b):l(a),w(b){}
- virtual float area()const{return l*w;}
- private:
- double l;
- double w;
- };
- class Triangle:public Shape
- {
- public:
- Triangle(double a,double b):d(a),h(b){}
- virtual float area()const{return (d*h)/2;}
- private:
- double d;
- double h;
- };
- void printArea(const Shape &s1)
- {
- cout<<s1.area()<<endl;
- }
- int main()
- {
- Circle c1(6.5);
- cout<<"圓面積=";
- printArea(c1);
- Rectangle r1(3,6);
- cout<<"矩形面積=";
- printArea(r1);
- Triangle t1(4,2);
- cout<<"三角形面積=";
- printArea(t1);
- }