Cpp/Qtday050912cpp基础

news2024/11/23 16:41:15

目录

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

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

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

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

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

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

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

代码

运行结果

思维导图


实现一个图形类(Shape),包含受保护成员属性:周长、面积,
公共成员函数:特殊成员函数书写
定义一个圆形类(Circle),继承自图形类,包含私有属性:半径
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
公共成员函数:特殊成员函数、以及获取周长、获取面积函数
在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。
代码
#include <iostream>

using namespace std;

#define PI 3.14

class 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.coloradmin.cn/o/1004607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YoloV8改进策略:Diverse Branch Block改进YoloV8,继续在重参数结构上恐龙抗狼

摘要 DBB(Diverse Branch Block)是一种类似Inception的多分支结构,用于网络结构重参数化。它通过多分支结构类型更丰富(多尺度卷积、平均池化等),感受野更多样性,各操作具有不同的计算复杂度,因此更具有通用性,可以用来替换单个卷积进行训练。在训练阶段,对模型中的…

软件自动化测试有哪些步骤?自动化测试需要找第三方检测机构吗?

您是否曾经因为软件出现问题而影响了工作进程或者个人生活的正常运转?那么&#xff0c;您是否了解软件自动化测试这一神奇的技术?在这篇文章中&#xff0c;我们将为您介绍软件自动化测试的定义和测试步骤&#xff0c;帮助您更好地了解自动化测试。 一、什么是软件自动化测试…

Qt自定义QSlider(支持水平垂直)

实现背景&#xff1a; Qt本身有自己的QSlider&#xff0c;为什么我们还要自定义实现呢&#xff0c;因为Qt自带的QSlider存在一个问题&#xff0c;当首尾为圆角时&#xff0c;滑动滚动条到首尾时会出现圆角变成矩形的问题。当然如果QSS之间的margin和滑动条的圆角控制的好的话是…

ModStartBlog v8.2.0 独立友情链接页面,博客列表样式优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

【系统设计系列】异步和网络通信

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemarti…

【DevOps核心理念基础】2. 敏捷开发与DevOps关系

一、什么是敏捷开发 ? 1.1 敏捷开发的核心模型 二、敏捷开发的要点 2.1 敏捷开发 > 执行细节 2.2 敏捷开发 > 思路的转变 客户需求&#xff1a;提升出行速度 三、敏捷开发 与 DevOps 四、DevOps 实践的度量标准 4.1 怎样判断DevOps实践好与坏? 一、什么是敏捷…

欧科云链研究院:锚定金融市场,香港从STO再出发

作者&#xff5c;Hedy Bi 昨日&#xff0c;据大公报报道&#xff0c;太极资本宣布推出香港首个面向「专业投资者」的房地产基金证券型代币发行&#xff08;STO&#xff09;。集资目标为1亿元。“牌照&#xff0c;醉翁之意不在酒。BTC、ETH等加密资产只是第一步&#xff0c;而背…

Ubuntu搭配POE交换机激活海康威视网络摄像头

前言 一般使用网络摄像头基本有两种方案&#xff1a; 用电源线和网线连接路由器&#xff08;交换机&#xff09;与网络摄像头用两根网线连接路由器交换机网络摄像头&#xff08;前提&#xff1a;交换机和网络摄像头都支持POE协议通电&#xff09; 踩坑日志 由于第一次使用网…

MySQL与ES数据同步之同步调用

这是第一种方法&#xff0c;也是最简单的方法&#xff0c;在对mysql进行增删改查时&#xff0c;操作后直接调用ES方法实现增删改查。 可以看出这种方式业务逻辑简单&#xff0c;实时性高&#xff0c;但是会有业务强耦合&#xff0c;存在双写失败丢数据风险&#xff0c;性能也比…

趣解设计模式之《为什么租房子要找中介?》

〇、小故事 小王大学毕业了&#xff0c;打算来北京闯荡一下&#xff0c;于是就先寄宿到了他的表姐家&#xff0c;白天的时候&#xff0c;自己在外面小区转一转&#xff0c;看看能不能找到可以租到的房子&#xff0c;他找了好几天都没有找到合适的&#xff0c;要么就是小区里一…

每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——33/70 第三十三天【JavaScript(webapi)】

JavaScript WebAPI WebAPI 背景知识DOM 基本概念获取元素事件初识操作元素输入密码的 显示 和隐藏点击计数器勾选复选框获取/修改 样式 属性开关灯WebAPI 背景知识 DOM 基本概念 获取元素 事件初识

JUC简介与环境搭建

1.新建一个Maven项目 2.导入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency> 3.检查Java版本 4.什么是JUC JUC&#xff08;java.util.co…

vue-tabel 中使用 el-autocomplete 出现的问题

必须加 :popper-append-to-body"false" :popper-class"vxetableignoreclear" 我自己用的话缺一不可 说一下我自己项目中遇到的问题吧&#xff0c;我写的是表格中套表格&#xff0c;会出现就是当下拉选的时候用selete是可以用的&#xff0c;但是用blur也…

026-从零搭建微服务-文件服务(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

探索程序员需要掌握的算法?

文章目录 一&#xff1a;引言二&#xff1a;常见算法介绍三&#xff1a;重点算法总结 &#x1f389;欢迎来到数据结构学习专栏~探索程序员需要掌握的算法&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章…

SoC性能指标ARM内核运算能力

自动驾驶芯片常用的性能评价指标:TOPS,DMIPS,GFLOPS分别说的是啥&#xff1f; TOPS Tera Operation Per Second&#xff0c;表示每秒钟可以进行的操作数量&#xff0c;用于衡量自动驾驶的算力。 众所周知&#xff0c;汽车上最常用的传感器是摄像头&#xff0c;而与之对应的计…

【K8S系列】深入解析k8s网络插件—Canal

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 在现代容器化应用程序的世界中…

Java密码学之数字签名

密码系统是加密技术及其附带基础工具的实现&#xff0c;以提供信息安全服务。基本密码系统的各种组件是明文&#xff0c;加密算法&#xff0c;密文&#xff0c;解密算法&#xff0c;加密密钥和解密密钥。其中加密密钥和解密密钥是&#xff1a; 加密密钥是发件人已知的值。发送…

Jmeter——结合Allure展示测试报告 _

在平时用jmeter做测试时&#xff0c;生成报告的模板&#xff0c;不是特别好。大家应该也知道allure报告&#xff0c;页面美观。 先来看效果图&#xff0c;报告首页&#xff0c;如下所示&#xff1a; ​编辑 报告详情信息&#xff0c;如下所示&#xff1a; ​编辑 运行run.…

van-list 下拉刷新 触底分页 触底分页事件只加载一次

我是 头部是筛选的条件&#xff0c;&#xff0c;更换不同的状态&#xff0c;显示不同的列表数据&#xff0c;比如 审批中数据是 对的&#xff0c;触底分页也是对的&#xff0c;如果我切换一个状态的话&#xff0c;总共是 15条数据&#xff0c;但是 切换了状态只显示第一页的数据…