C++小例子

来源:互联网 发布:三只眼 漫画 知乎 编辑:程序博客网 时间:2024/05/01 06:02


        写一个程序,定义一个抽象类Shape,由它派生3个类:Square(正方形)、Trapezoid(梯形)和Triangle(三角形)。用虚函数分别计算几种图形面积、并求它们的和。要求用基类指针数组,使它每一个元素指向一个派生类对象。

分析:题目给出的很清楚,只要写一个基类,三个派生类,并且通过主函数显示出来就可以了。。

唯一有点难度的就是最后一句话,,用基类指针数组,使他每一个元素指向一个派生类对象。

这个可以在主函数中,声明一个数组,数组中包含各形状图形的参数,将数组的指针指向调用派生类的方法。。

源码如下:

#include <iostream>using namespace std;class Shape{public :virtual double area() const=0;};//正方形:长*宽class Square:public Shape{public:Square(double s):side(s){} //double area() const{return side*side;//正方形的面积}private :double side;//定义一个私有边长};//梯形:(上底加下底)*高 *0.5class Trapezoid:public Shape{public:Trapezoid(double i,double j,double k):a(i),b(j),h(k){}double area() const{return ((a+b)*h*0.5);}private:double a,b,h;}//三角形 (底*高)*0.5class Triangle:public Shape{public:Triangle(double i,double j):w (i),h(j){}double aree()const{return w*h*0.5;}private:double w,h;}void main{Shape * p[5];Square se(5);Trapezoid td(2,5,4);Triangle te(5,8);p[0]=&se;//正方形p[1]=&td;//梯形p[2]=&te;//三角形double da=0;for(int i=0;i<3;i++){da+=p[i]->area();}cout<<"图形的总面积是:"<<da<<endl;}
输出结果:

图形的总面积是:25

图形的总面积是:14

图形的总面积是:20



0 0
原创粉丝点击