实现一个图形类(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;
- }
-
相关阅读:
封装一个自己的前端脚手架cli工具(二)
“AttackCombo-basketball“ app Tech Support(URL)
【QT】使用toBase64方法将.txt文件的明文变为非明文(类似加密)
Android-Fragment知识详解
第六章:利用dumi搭建组件文档【前端工程化入门-----从零实现一个react+ts+vite+tailwindcss组件库】
1.4.15 实验15:ospf多区域NSSA
Java面向对象16:接口的定义与实现
黑猫带你学Makefile第3篇:Makefile基本语法
场景之分页查询设计
Hadoop——Yarn基础架构
-
原文地址:https://blog.csdn.net/cscssacd/article/details/132839924