实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
#include <iostream>
using namespace std;
#define PI 3.14
class Shape //定义一个图形类
{
protected:
double girth; //周长
double area; //面积
public:
//无参构造
Shape(){}
//有参构造
Shape(double a,double b):girth(a),area(b){}
void show()
{
cout<<"girth= "<<girth<<endl;
cout<<"area= "<<area<<endl;
}
//析构函数
~Shape()
{
cout<<"析构函数"<<endl;
}
};
//定义圆形类,继承图形类
class Circle : public Shape
{
private:
double radius ; //圆的半径
public:
//无参构造
Circle(){}
//有参构造
Circle(int r):radius(r)
{
cout<<"有参构造"<<endl;
}
//获取周长
void get_girth()
{
girth=PI*(2*radius);
}
//获取面积
void get_area()
{
area=PI*(radius*radius);
}
//拷贝构造
Circle(const Circle &other):radius(other.radius)
{
cout<<"拷贝构造"<<endl;
}
void display()
{
cout<<"girth= "<<girth<<endl;
cout<<"area= "<<area<<endl;
}
};
class Rect :public Shape //定义一个矩形类
{
private:
double width; //宽度
double height; //长度
public:
//无参构造
Rect(){}
//有参构造
Rect(double w,double h):width(w),height(h)
{
cout<<"有参构造"<<endl;
}
//获取周长
void get_girth()
{
girth=(width+height)*2;
}
//获取面积
void get_area()
{
area=height*width;
}
//拷贝构造
Rect(const Rect &other):width(other.width),height(other.height)
{
cout<<"拷贝构造"<<endl;
}
void display()
{
cout<<"girth= "<<girth<<endl;
cout<<"area= "<<area<<endl;
}
};
int main()
{
Shape s(0,0);
Circle c1(2);
c1.get_girth();
c1.get_area();
c1.display();
Circle c2=c1;
c2.get_girth();
c2.get_area();
c2.display();
Rect r1(4,9);
r1.get_girth();
r1.get_area();
r1.display();
Rect r2;
r2=r1;
r2.get_girth();
r2.get_area();
r2.display();
return 0;
}
2.思维导图