实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
- #include
- #define PI 3.14//π
- using namespace std;
- //图形类
- class Shape
- {
- protected:
- double cir;//周长
- double area;//面积
- public:
- //无参构造
- Shape()
- {
- cout<<"Shape::无参构造"<
- }
- //有参构造
- Shape(double cir,double area):cir(cir),area(area)
- {
- cout<<"Shape::有参构造"<
- }
- //析构函数
- ~Shape()
- {
- cout<<"Shape::析构函数"<
- }
- //拷贝构造函数
- Shape(const Shape &other):cir(other.cir),area(other.area)
- {
- cout<<"Shape::拷贝构造函数"<
- }
- //拷贝赋值函数
- Shape & operator=(const Shape &other)
- {
- if(this!=&other)//确定不是自己给自己赋值
- {
- this->cir=other.cir;
- this->area=other.area;
- }
- cout<<"Shape::拷贝赋值函数"<
- return *this;
- }
- };
- class Circle:public Shape
- {
- private:
- double rad;//半径
- public:
- //无参构造
- Circle()
- {
- cout<<"Circle::无参构造"<
- }
- //有参构造
- Circle(double rad):rad(rad)
- {
- cout<<"Cricle::有参构造"<
- }
- //析构函数
- ~Circle()
- {
- cout<<"Circle::析构函数"<
- }
- //拷贝构造函数
- Circle(const Circle &other):rad(other.rad)
- {
- cout<<"Cricle::拷贝构造函数"<
- }
- //拷贝赋值函数
- Circle & operator=(const Circle &other)
- {
- if(this!=&other)//确定不是自己给自己赋值
- {
- this->rad=other.rad;
- }
- cout<<"Circle::拷贝赋值函数"<
- return *this;
- }
- //计算周长函数
- void get_cir()
- {
- cir=2*PI*rad;
- cout<<"cir="<
- }
- //计算面积函数
- void get_area()
- {
- area=PI*rad*rad;
- cout<<"area="<
- }
- };
- class Rect:public Shape
- {
- private:
- double length;//长度
- double width;//宽度
- public:
- //无参构造
- Rect()
- {
- cout<<"Rect::无参构造"<
- }
- //有参构造
- Rect(double length,double width):length(length),width(width)
- {
- cout<<"Rect::有参构造"<
- }
- //析构函数
- ~Rect()
- {
- cout<<"Rect::析构函数"<
- }
- //拷贝构造函数
- Rect(const Rect &other):length(other.length),width(other.width)
- {
- cout<<"Rect::拷贝构造函数"<
- }
- //拷贝赋值函数
- Rect & operator=(const Rect &other)
- {
- if(this!=&other)//确定不是自己给自己赋值
- {
- this->length=other.length;
- this->width=other.width;
- }
- cout<<"Rect::拷贝赋值函数"<
- return *this;
- }
- //计算周长函数
- void get_cir()
- {
- cir=(length+width)*2;
- cout<<"cir="<
- }
- //计算面积函数
- void get_area()
- {
- area=length*width;
- cout<<"area="<
- }
- };
- int main()
- {
- //实例一个圆
- Circle c(3);
- c.get_cir();
- c.get_area();
- //实例拷贝构造函数
- Circle c1=c;
- c1.get_cir();
- c1.get_area();
- //实例一个矩形
- Rect r(3,4);
- r.get_cir();
- r.get_area();
- //实例拷贝赋值函数
- Rect r1;
- r1=r;
- r1.get_cir();
- r1.get_area();
- return 0;
- }
结果:

思维导图:

-
相关阅读:
机器学习笔记之概率图模型(九)最大乘积算法(Max-Product Algorithm)
Linux 部署 Harbor
一致性算法介绍(一)
【ASE入门学习】ASE入门系列——序章
46、优惠券秒杀(集群下的线程并发问题(微服务集群))
C++ Reference: Standard C++ Library reference: C Library: cwchar: wcstold
【漏洞复现】六、maccms 远程命令执行(CVE-2017-17733)
备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
刷题日常计~JS③
xxl-job整合到微服务
-
原文地址:https://blog.csdn.net/m0_59031281/article/details/132839845