实现一个图形类(Shape) ,包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle) ,继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
- #include
- #define pai 3.14159
- using namespace std;
- //图形类
- class Shape
- {
- protected:
- double cir; //周长
- double area; //面积
- public:
- //无参构造函数
- Shape(){}
- //有参构造函数
- Shape(double a,double b):cir(a),area(b)
- {
- cout<<"Shape有参构造函数"<
- }
- //析构函数
- ~Shape()
- {
- cout<<"Shape析构函数"<
- }
- //拷贝构造函数
- Shape(const Shape &other):cir(other.cir),area(other.area)
- {
- cout<<"拷贝构造函数"<
- }
- //定义拷贝赋值函数
- Shape &operator=(const Shape &other)
- {
- this->cir =other.cir;
- this->area =other.area;
- return *this;
- }
- //移动赋值函数
- Shape &operator=(Shape &&other)
- {
- this->cir =other.cir;
- this->area =other.area;
- return *this;
- }
-
- };
-
- //圆形类,继承图形类
- class Circle:public Shape
- {
- private:
- double r; //半径
- public:
- //无参构造函数
- Circle(){}
- //有参构造函数
- Circle(double c):r(c)
- {
- cout<<"Circle有参构造函数"<
- }
- //析构函数
- ~Circle()
- {
- cout<<"Circle析构函数"<
- }
- //拷贝构造函数
- Circle(const Circle &other):r(other.r)
- {
- cout<<"拷贝构造函数"<
- }
- //定义拷贝赋值函数
- Circle &operator=(const Circle &other)
- {
- this->r =other.r;
-
- return *this;
- }
- //移动赋值函数
- Circle &operator=(Circle &&other)
- {
- this->r =other.r;
- return *this;
- }
-
- //获取周长
- double get_len()
- {
- cir = 2 * r * pai;
-
- return cir;
- }
- //获取面积
- double get_area()
- {
- area = pai * r * r;
- return area;
- }
-
- };
-
- //定义一个矩形类,继承自图形类
- class Rect:public Shape
- {
- private:
- double lenth; //长度
- double width; //宽度
- public:
- //无参构造函数
- Rect(){}
- //有参构造函数
- Rect(double l,double w):lenth(l),width(w)
- {
- cout<<"Rect有参构造函数"<
- }
- //析构函数
- ~Rect()
- {
- cout<<"Rect析构函数"<
- }
- //拷贝构造函数
- Rect(const Rect &other):lenth(other.lenth),width(other.width)
- {
- cout<<"拷贝构造函数"<
- }
- //定义拷贝赋值函数
- Rect &operator=(const Rect &other)
- {
- this->width =other.width;
- this->lenth = other.lenth;
-
- return *this;
- }
- //移动赋值函数
- Rect &operator=(Rect &&other)
- {
- this->width =other.width;
- this->lenth = other.lenth;
- return *this;
- }
- //获取周长
- double get_len()
- {
- cir = (width+lenth)*2;
- return cir;
- }
- //获取面积
- double get_area()
- {
- area = lenth * width;
- return area;
- }
-
-
-
-
-
- };
-
- int main()
- {
- Circle c1(5.3);
- cout<<"周长是"<
get_len()<<" 面积是:"<get_area()< - Circle c2(c1);
- cout<<"周长是"<
get_len()<<" 面积是:"<get_area()< - Circle c3 = (2);
- cout<<"周长是"<
get_len()<<" 面积是:"<get_area()< - cout<<"*********************************************************"<
- Rect r1(2.4,9.9);
- cout<<"Rect周长是"<
get_len()<<" Rect面积是:"<get_area()< - Rect r2(r1);
- cout<<"Rect周长是"<
get_len()<<" Rect面积是:"<get_area()< - Rect r3(1.2,3.4);
- cout<<"Rect周长是"<
get_len()<<" Rect面积是:"<get_area()< - Rect r4 = r3;
- cout<<"Rect周长是"<
get_len()<<" Rect面积是:"<get_area()< - return 0;
- }


-
相关阅读:
输出9*9口诀。
vue2和vue3拖拽移动div
聚合支付备案机构为479家,首次出现注销聚合支付备案
软考系统架构师倒计时第2天
Huggingface网页解析和下载爬虫
大数据入门篇
【Docker安装部署RocketMQ消息中间件详细教程】
堆料,新能源汽车走上智能手机老路
Python毕业论文题目计算机毕业论文django微信小程序校园导航系统
基于STM32结合CubeMX学习Free-RT-OS的源码之任务调度
-
原文地址:https://blog.csdn.net/cscssacd/article/details/132839924