实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
#include <iostream>
using namespace std;
//图形类
class Shape
{
protected:
double len;
double Area;
public:
//无参构造
Shape():len(0),Area(0)
{
cout<<"Shape:无参构造"<<endl;
}
//有参构造
Shape(int l,int a):len(l),Area(a)
{
cout<<"Shape:有参构造"<<endl;
}
//析构函数
~Shape()
{
cout<<"析构函数"<<endl;
}
//拷贝构造函数
Shape(const Shape &other):len(other.len),Area(other.Area)
{
cout<<"拷贝构造函数"<<endl;
}
//拷贝赋值函数
Shape &operator=(const Shape &other)
{
this->len=other.len;
this->Area=other.Area;
return *this;
}
};
//圆形类
class Circle:public Shape
{
private:
double R;
public:
//无参构造
Circle()
{
cout<<"Circle:无参构造"<<endl;
}
//有参构造
Circle(double r):R(r)
{
len=2*3.14*r;
Area=r*r*3.14;
cout<<"Circle:有参构造"<<endl;
}
//析构函数
~Circle()
{
cout<<"析构函数"<<endl;
}
//拷贝构造函数
Circle(Circle &other):Shape(other.len,other.Area),R(other.R)
{
cout<<"拷贝构造函数"<<endl;
}
//拷贝赋值函数
Circle &operator=(const Circle &other)
{
this->R=other.R;
this->len=other.len;
this->Area=other.Area;
return *this;
}
//求周长
double c_len()
{
return len;
}
//求面积
double c_area()
{
return Area;
}
};
//矩形类
class Rect:public Shape
{
private:
double cha;
double gao;
public:
//无参构造
Rect()
{
cout<<"Rect:无参构造"<<endl;
}
//有参构造
Rect(double c,double g):cha(c),gao(g)
{
len=2*(c+g);
Area=c*g;
cout<<"Rect:有参构造"<<endl;
}
//析构函数
~Rect()
{
cout<<"析构函数"<<endl;
}
//拷贝构造函数
Rect(const Rect &other):Shape(other.len,other.Area),cha(other.cha),gao(other.gao)
{
cout<<"拷贝构造函数"<<endl;
}
//拷贝赋值函数
Rect &operator=(const Rect &other)
{
len=other.len;
Area=other.Area;
cha=other.cha;
gao=other.gao;
return *this;
}
//求周长
double r_len()
{
return cha*2+gao*2;
}
//求面积
double r_area()
{
return cha*gao;
}
};
int main()
{
Circle y(5);
cout<<"这个圆形的周长为"<<y.c_len()<<endl;
cout<<"这个圆形的面积为"<<y.c_area()<<endl;
Rect r(5,8);
cout<<"这个矩形的周长为"<<r.r_len()<<endl;
cout<<"这个矩形的面积为"<<r.r_area()<<endl;
return 0;
}