2023/09/12 qtc++

news2024/11/27 9:48:40

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

#include <iostream>
#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有参构造函数"<<endl;
    }
    //析构函数
    ~Shape()
    {
        cout<<"Shape析构函数"<<endl;
    }
    //拷贝构造函数
    Shape(const Shape &other):cir(other.cir),area(other.area)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //定义拷贝赋值函数
    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有参构造函数"<<endl;
    }
    //析构函数
    ~Circle()
    {
        cout<<"Circle析构函数"<<endl;
    }
    //拷贝构造函数
    Circle(const Circle &other):r(other.r)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //定义拷贝赋值函数
    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有参构造函数"<<endl;
    }
    //析构函数
    ~Rect()
    {
        cout<<"Rect析构函数"<<endl;
    }
    //拷贝构造函数
    Rect(const Rect &other):lenth(other.lenth),width(other.width)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //定义拷贝赋值函数
    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<<"周长是"<<c1.get_len()<<"   面积是:"<<c1.get_area()<<endl;
   Circle c2(c1);
   cout<<"周长是"<<c2.get_len()<<"   面积是:"<<c2.get_area()<<endl;
   Circle c3 = (2);
   cout<<"周长是"<<c3.get_len()<<"   面积是:"<<c3.get_area()<<endl;
   cout<<"*********************************************************"<<endl;
   Rect r1(2.4,9.9);
   cout<<"Rect周长是"<<r1.get_len()<<"   Rect面积是:"<<r1.get_area()<<endl;
   Rect r2(r1);
   cout<<"Rect周长是"<<r2.get_len()<<"   Rect面积是:"<<r2.get_area()<<endl;
   Rect r3(1.2,3.4);
   cout<<"Rect周长是"<<r3.get_len()<<"   Rect面积是:"<<r3.get_area()<<endl;
   Rect r4 = r3;
   cout<<"Rect周长是"<<r4.get_len()<<"   Rect面积是:"<<r4.get_area()<<endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004861.html

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

相关文章

使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人

使用LangchainGPT向量数据库chromadb 来创建文档对话机器人 一.效果图如下&#xff1a; 二.安装包 pip install langchainpip install chromadbpip install unstructuredpip install jieba三.代码如下 #!/usr/bin/python # -*- coding: UTF-8 -*-import os # 导入os模块&…

59-代码随想录--数组--螺旋矩阵

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定一个正整数 n&#xff0c;生成一个包含 1 到 n^2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 模拟顺时针…

电路电子技术1--关联参考方向及功率的计算

1.判断 电流由元件的低点位端流向高电位端的参考方向称为关联参考方向。() 考点&#xff1a;电流、电压的参考方向 解释&#xff1a;在一些复杂的电路中&#xff0c;往往不能预先确定某段电路上的电流、电压的实际方向&#xff0c;所以引进了 “关联参考方向”。为了能够解决问…

网工内推 | 运营商技术支持,数通基础扎实,最高17k

01 新华三技术有限公司 招聘岗位&#xff1a;运营商技术支持工程师 职责描述&#xff1a; 1、负责新华三产品产品和方案在运营商客户的日常运维和技术支持&#xff1b; 2、为运营商客户提供网上问题处理、业务变更支持&#xff1b; 3、负责对应运营商客户日常维系&#xff0…

RabbitMQ基础概念-02

RabbitMQ是基于AMQP协议开发的一个MQ产品&#xff0c; 首先我们以Web管理页面为 入口&#xff0c;来了解下RabbitMQ的一些基础概念&#xff0c;这样我们后续才好针对这些基础概念 进行编程实战。 可以参照下图来理解RabbitMQ当中的基础概念&#xff1a; 虚拟主机 virtual hos…

绝热量热法反应热测试过程中的温度和压力自动跟踪控制解决方案

摘要&#xff1a;现有的ARC加速量热仪普遍存在单热电偶温差测量误差大造成绝热效果不好&#xff0c;以及样品球较大壁厚造成热惰性因子较大&#xff0c;都使得ARC测量精度不高。为此本文提出了技术改进解决方案&#xff0c;一是采用多只热电偶组成的温差热电堆进行温差测量&…

Dynamic-TP入门初探

背景 在使用线程池的过程中&#xff0c;会出现一些痛点&#xff1a; 代码中创建了一个线程池&#xff0c;但是不知道那几个核心参数设置多少比较合适。凭经验设置参数值&#xff0c;上线后发现需要调整&#xff0c;改代码重新发布服务&#xff0c;非常麻烦。线程池相对开发人…

[N0wayback 2023春节红包题] happyGame python反编译

这个反编译的比较深 一&#xff0c;从附件的图标看是python打包的exe文件&#xff0c;先用pyinstxtractor.py 解包 生成的文件在main.exe_extracted目录下&#xff0c;在这里边找到main 二&#xff0c;把main改名为pyc然后加上头 这个头从包里找一个带头的pyc文件&#xff…

jvm永久代配置

1. 元空间介绍 在JDK1.7之前&#xff0c;HotSpot 虚拟机把方法区当成永久代&#xff08;方法区的落地实现&#xff09;来进行垃圾回收。 而从 JDK 1.8 开始&#xff0c;移除永久代&#xff0c;并把方法区移至元空间&#xff0c;它位于本地内存中&#xff0c;而不是虚拟机内存中…

文本生成图形功能,采用非WGS84坐标系的一定要注意

新版GIS数据转换器-矢量5.1和新版GIS数据转换器-栅格4.3已经上传微云&#xff0c;修正了一些BUG。需要请自行下载&#xff01; 文本生成图形功能,采用非WGS84坐标系的一定要选择输入坐标系&#xff0c;因为默认是WGS84&#xff0c;其它都不会软件自动填写&#xff0c;需要您手…

MYBATIS-PLUS入门使用、踩坑记录

转载&#xff1a; mybatis-plus入门使用、踩坑记录 - 灰信网&#xff08;软件开发博客聚合&#xff09; 首先引入MYBATIS-PLUS依赖&#xff1a; SPRING BOOT项目&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus…

Git 基本操作【本地仓库与远程仓库的推送、克隆和拉取】

文章目录 一、Git简介二、Git的下载安装三、Git常规命令四、新建本地仓库五、本地分支操作六、Git远程仓库七、远程仓库克隆、抓取和拉取八、总结九、学习交流 一、Git简介 Git是分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&…

每日一博 - 闲聊SQL Query Execution Order

文章目录 SQL查询阶段关键字对结果集和性能的影响Flow小结 SQL查询阶段 在MySQL中&#xff0c;SQL查询的执行顺序可以分为以下几个阶段&#xff1a; 词法分析&#xff08;Lexical Analysis&#xff09;&#xff1a;在这个阶段&#xff0c;MySQL首先将SQL查询文本分解成词法单元…

算法通关18关 | 回溯模板如何解决排列和单词搜索问题

1. 排列问题 题目 LeetCode46 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列&#xff0c; 思路 排列问题的思路同样使用与字母大小写全排列LeetCode784。 元素在使用过一次的时候&#xff0c;在图中第二层的时候&#xff0c;还会再被使用&#xff0c;所以能…

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

在今天的数字化世界中&#xff0c;监控系统对于维护应用程序和基础设施的稳定性至关重要。本文将介绍如何使用 Grafana 和 CnosDB 构建强大的监控体系&#xff0c;以便实时监视性能、发现问题并采取及时的措施。 CnosDB已正式上架Grafana插件市场 Grafana&#xff1a;开源监控和…

C++ 类的继承特性简单运用

封装一个名为Shape&#xff08;图形&#xff09;的父类&#xff0c;从父类中派生两个子类&#xff0c;分别为Circle&#xff08;圆形&#xff09;&#xff0c;Rect&#xff08;矩形&#xff09;&#xff0c;父类拥有两个子类的共同特性&#xff0c;面积和周长&#xff0c;两个子…

buuctf crypto 【密码学的心声】解题记录

1.打开可以看到一个曲谱 2.看到曲谱中的提示埃塞克码可以想到ascii码&#xff0c;没有八可以联想到八进制&#xff0c;而八进制又对应着三位的二进制&#xff0c;然后写个脚本就好了 oct [111,114,157,166,145,123,145,143,165,162,151,164,171,126,145,162,171,115,165,143,…

UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm。 效果: 代码: #include "me.hpp"//parm[2] static void AskFaceUVP…

使用NSISW工具打包

程序使用VS2019Qt5.6.3开发工具编写。 已经有生成的32位Release文件夹 D:\work\版本\1.0.0\code\Release 文件夹内含&#xff1a; 关键是nsis.nsi 把nsis.nsi拖拽入下面的页面&#xff1a; 等待一段时间。打包成功。

随机密码生成器(Python)

随机密码生成器 想要生成一个随机密码&#xff0c;需要考虑下面两点&#xff1a; 1.字符集合 2.密码的位数 下面代码中引用了string模块和random模块&#xff0c;string.printable是string中的可打印字符&#xff0c;用strip函数首尾去掉空格&#xff1b;random模块用来取字符&…