7、形状(一) 编写C++程序完成以下功能: (1) 声明一个基类Shape(形状),其中包含一个方法来计算面积; (2) 从Shape派生两个类矩形和圆形; (3) 从矩形派生正方形; (4) 分别实现派生类构造函数、析构函数和其他方法; (5) 创建派生类的对象,观察构造函数、析构函数调用次序; (6) 不同对象计算面积。 #include<iostream> #define PI 3.1415 using namespace std; class Shape { public: Shape() {cout<<"调用构造函数Shape"<<endl;} ~Shape() {cout<<"调用析构函数Shape"<<endl;} double Girth() {} double Area() {} }; class Rectangle: public Shape { private: double len; double wide; public: Rectangle(double l=0,double w=0) {len=l; wide=w; cout<<"调用构造函数Rectangle"<<endl;} void SetRectangle(double l=0,double w=0) {len=l; wide=w;} ~Rectangle(){cout<<"调用析构函数Rectangle"<<endl;} double Girth() {return (len+wide)*2;} double Area() {return len*wide;} }; class Circle:public Shape { private: double r; public: Circle(double radius=0) {r=radius; cout<<"调用构造函数Circle"<<endl;} void SetCircle(double radius=0) {r=radius;} ~Circle(){cout<<"调用析构函数Circle"<<endl;} double Girth() {return 2*PI*r;} double Area() {return PI*r*r;} }; class Square:public Rectangle { public: Square(double x=0) {Rectangle(x,x); cout<<"调用构造函数Square"<<endl;} void SetSquare(double x=0) {SetRectangle(x,x);} ~Square(){cout<<"调用析构函数Square"<<endl;} }; int main() { Rectangle b; Circle c; Square d; double x,y,m,n; cout<<endl<<"请输入矩形长和宽(用空格隔开):"<<endl; cin>>x>>y; b.SetRectangle(x,y); cout<<"矩形周长为:"<<b.Girth()<<endl; cout<<"矩形面积为:"<<b.Area()<<endl; cout<<endl<<"请输入圆形的半径:"<<endl; cin>>m; c.SetCircle(m); cout<<"圆形周长为:"<<c.Girth()<<endl; cout<<"圆形面积为:"<<c.Area()<<endl; cout<<endl<<"请输入正方形的边长:"<<endl; cin>>n; d.SetSquare(n); cout<<"正方形周长为:"<<d.Girth()<<endl; cout<<"圆形面积为:"<<d.Area()<<endl; system("pause"); cout<<endl; return 0; }
![]() |
|
来自: BUPT-BYR > 《cpp语言实例交流》