继承与派生2

来源:互联网 发布:ipad下不了软件 编辑:程序博客网 时间:2024/05/15 23:53

编写程序,声明一个基类Shape,再派生出Rectangle类和Circle,二者都有GetArea()函数,计算对象的面积。使用程序Rectangle类创建一个派生类Square。

#include<iostream>using namespace std;class Shape//图形类{public:virtual ~Shape(){}//析构函数virtual double GetArea()=0;//纯虚函数virtual void print()=0;//纯虚函数};class Rectangle:virtual public Shape//矩形类,公有继承图形类{public:Rectangle();//构造函数Rectangle(double w,double h);//构造函数~Rectangle(){}//析构函数double GetArea();//面积函数virtual void print();protected:double width,height;//宽,高};Rectangle::Rectangle(){width=0;height=0;}Rectangle::Rectangle(double w,double h){width=w;height=h;}double Rectangle::GetArea(){return(width*height);}void Rectangle::print(){cout<<"The Rectangle's area is:";}class Circle:public Shape//圆类,公有继承图形类{public:Circle();//构造函数Circle(double r);//构造函数~Circle(){}//析构函数double GetArea();//面积函数void print();protected:double radius;};Circle::Circle(){radius=0;}Circle::Circle(double r){radius=r;}double Circle::GetArea(){return (3.14*radius*radius);}void Circle::print(){cout<<"The Circle's area is:";}class Square:public Rectangle//正方形类,公有继承矩形类{public:Square(double w=0.0);//构造函数~Square(){}//析构函数double GetArea();//面积函数void print();};Square::Square(double w):Rectangle(w,w){}double Square::GetArea(){return Rectangle::GetArea();}void Square::print(){cout<<"The Square's area is:";}int main(){Shape *sh[3];sh[0]=new Rectangle;sh[1]=new Circle;sh[2]=new Square;Rectangle *re[2];re[0]=new Rectangle;re[1]=new Square;int i;for(i=0;i<3;i++){sh[i]->print();cout<<sh[i]->GetArea();cout<<endl;delete sh[i];}for(i=0;i<2;i++){re[i]->print();cout<<re[i]->GetArea();cout<<endl;delete re[i];}sh[0]=new Rectangle(3.8,7.5);sh[1]=new Circle(5);sh[2]=new Square(10);re[0]=new Rectangle(5,7);re[1]=new Square(4.5);for(i=0;i<3;i++){sh[i]->print();cout<<sh[i]->GetArea();cout<<endl;delete sh[i];}for(i=0;i<2;i++){re[i]->print();cout<<re[i]->GetArea();cout<<endl;delete re[i];}return 0;}


0 0
原创粉丝点击