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