实现一个图形类(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;
- }
结果:
思维导图:
-
相关阅读:
Spring Cloud开发实践(六): 基于Consul和Spring Cloud 2021.0的演示项目
kafka知识总结
介绍 TensorFlow 的基本概念和使用场景
懒人方案--半天搞定一个SpringBoot单体项目
PAT 甲级 A1072 Gas Station
计算BMI健康指数
Java 基础入门
面试八股文:C++ 多态 继承 重载 虚函数
项目2-年收入判断
deepvariant 基因变异识别算法docker版使用
-
原文地址:https://blog.csdn.net/m0_59031281/article/details/132839845