当前位置: 首页 > news >正文

Cpp/Qtday050912cpp基础

目录

实现一个图形类(Shape),包含受保护成员属性:周长、面积,

公共成员函数:特殊成员函数书写

定义一个圆形类(Circle),继承自图形类,包含私有属性:半径

公共成员函数:特殊成员函数、以及获取周长、获取面积函数

定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度

公共成员函数:特殊成员函数、以及获取周长、获取面积函数

在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。

代码

运行结果

思维导图


实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
代码
#include <iostream>using namespace std;#define PI 3.14class Shape
{
protected:double circumference;double area;
public://无参构造Shape(){}//有参构造Shape(double c,double a):circumference(c),area(a){}//拷贝构造Shape(const Shape &s):circumference(s.circumference),area(s.area){}//移动构造Shape(Shape &&s):circumference(s.circumference),area(s.area){}//拷贝赋值Shape &operator=(const Shape &s){circumference = s.circumference;area = s.area;return *this;}//移动赋值Shape &operator=(Shape &&s){circumference = s.circumference;area = s.area;return *this;}//析构函数~Shape(){}
};class Circle:public Shape
{
private:int radius;
public://无参构造Circle ():Shape(2*PI,PI),radius(1){}//有参构造Circle (int r):Shape(2*PI*r,PI*r*r),radius(r){}//拷贝构造Circle(const Circle &c):Shape(c.circumference,c.area),radius(c.radius){}//移动构造Circle(Circle &&c):Shape(c.circumference,c.area),radius(c.radius){}//拷贝赋值Circle &operator=(const Circle &c){circumference = c.circumference;area = c.area;radius = c.radius;return *this;}//移动赋值Circle &operator=(Circle &&c){circumference = c.circumference;area = c.area;radius = c.radius;return *this;}//析构函数~Circle(){}//外部获取改变参数Circle &argch(int r){circumference = 2*PI*r;area = PI*r*r;radius = r;return *this;}//获取周长函数double circumference_get(){//cout<<"周长为:";return circumference;}//获取面积函数double area_get(){//cout<<"面积为:";return area;}
};class Rect:public Shape
{
private:int length;int width;
public://无参构造Rect ():Shape(2*(1+1),1*1),length(1),width(1){}//有参构造Rect (int l,int w):Shape(2*(l+w),l*w),length(l),width(w){}//拷贝构造Rect(const Rect &r):Shape(r.circumference,r.area),length(r.length),width(r.width){}//移动构造Rect(Rect &&r):Shape(r.circumference,r.area),length(r.length),width(r.width){}//拷贝赋值Rect &operator=(const Rect &r){circumference = r.circumference;area = r.area;length = r.length;width = r.width;return *this;}//移动赋值Rect &operator=(Rect &&r){circumference = r.circumference;area = r.area;length = r.length;width = r.width;return *this;}//析构函数~Rect(){}//外部获取改变参数Rect &argch(int l,int w){circumference = 2*(l+w);area = l*w;length = l;width = w;return *this;}//获取周长函数double circumference_get(){//cout<<"周长为:";return circumference;}//获取面积函数double area_get(){//cout<<"面积为:";return area;}
};int main()
{cout<<"****************以下为Circle测试**************"<<endl;Circle c1(5);cout<<"c1:"<<"面积为:"<<c1.area_get()<<"  周长为:"<<c1.circumference_get()<<endl;Circle c2;cout<<"c2:"<<"面积为:"<<c2.area_get()<<"  周长为:"<<c2.circumference_get()<<endl;c2 = c1;cout<<"c2:"<<"面积为:"<<c2.area_get()<<"  周长为:"<<c2.circumference_get()<<endl;c1.argch(7);cout<<"c1:"<<"面积为:"<<c1.area_get()<<"  周长为:"<<c1.circumference_get()<<endl;Circle c3(c1);cout<<"c3:"<<"面积为:"<<c3.area_get()<<"  周长为:"<<c3.circumference_get()<<endl;cout<<"*****************以下为Rect测试***************"<<endl;Rect r1(3,4);cout<<"r1:"<<"面积为:"<<r1.area_get()<<"  周长为:"<<r1.circumference_get()<<endl;Rect r2;cout<<"r2:"<<"面积为:"<<r2.area_get()<<"  周长为:"<<r2.circumference_get()<<endl;r2 = r1;cout<<"r2:"<<"面积为:"<<r2.area_get()<<"  周长为:"<<r2.circumference_get()<<endl;r1.argch(5,6);cout<<"r1:"<<"面积为:"<<r1.area_get()<<"  周长为:"<<r1.circumference_get()<<endl;Rect r3(r1);cout<<"r3:"<<"面积为:"<<r3.area_get()<<"  周长为:"<<r3.circumference_get()<<endl;return 0;
}
运行结果

思维导图

http://www.lryc.cn/news/164813.html

相关文章:

  • Git diff 使用 vimdiff 对比差异
  • c小白勇闯结构体!!!!
  • 【DevOps核心理念基础】3. 敏捷开发最佳实践
  • 二进制、数位dp:0912T3
  • Java基于SpringBoot+Vue的 4S店车辆管理系统
  • 助力智能化公路养护,基于YOLOv5s集成SPD-BIFPN-SE开发构建公路开裂检测识别系统
  • C++--day5
  • Django应用部署实战:从开发到生产,全程解析
  • 群晖NAS如何在内网部署HTTPS服务让浏览器信任证书
  • crAPI靶场学习记录
  • 知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用
  • 20.Xaml GroupBox控件 ---->带标题的内容控件
  • 基于CycleGAN的山水风格画迁移
  • ​@Cacheable 注解​
  • vue3+ts项目打包后的本地访问
  • 探索程序员需要掌握的算法?
  • 性能测试 —— Jmeter定时器
  • mp4视频太大怎么压缩?几种常见压缩方法
  • 论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像
  • Python自动化测试 史上最全的进阶教程
  • centos pip失效
  • Java——》ThreadLocal
  • 如何做好利益相关方的期望管理?
  • 【K8S系列】深入解析k8s网络插件—Canal
  • 从单页面应用角度去解决不跳转页面,也能更改浏览器url地址
  • Linux:keepalived + ipvsadm
  • Linux基础命令(示例代码 + 解释)
  • 巨人互动|Google企业户Google“自动采纳建议”应该如何使用
  • 元宇宙全球市场规模到2030年将达9805亿美元!
  • 《向量数据库指南》——向量数据库内核面临的技术挑战及应对措施