0823|C++day3 类+this指针+类中的特殊成员函数(6种)

news2024/9/28 23:36:22

一、思维导图

二、作业

要求:

        设计一个Per类。类中包含私有成员:姓名、年龄、指针成员身高、体重;

        再设计一个Stu类,类中包含私有成员:成绩、Per类对象 p1;

        设计这两个类的构造函数、析构函数和拷贝构造函数。

#include <iostream>

using namespace std;
class Per
{
    string name; //姓名
    int age;     //年龄
    int *h;      //身高
    int *w;      //体重
public:
    Per():h(new int),w(new int)//在不传参的情况下,给指针成员h、w用堆区的空间初始化
    {
        cout << "Per无参构造" << endl;
    }
    Per(int h,int w):h(new int(h)),w(new int (w)) //在参数为整型变量的情况下,让h、w指向堆区申请的空间
    //但是把这片空间的内容,用传过来的整型变量h、w初始化
    {
        cout << "Per的有参构造" << endl;
    }
    //获取姓名赋值到结构体中
    void get_name(string name);
    //获取年龄赋值到结构体中
    void get_age(int age);

    //析构函数
    ~Per()
    {
        //在析构之前释放堆区空间
        cout << "准备释放空间:" << h << endl;
        cout << "准备释放空间:" << w << endl;
        delete h;
        delete w;
        h = nullptr;
        w = nullptr;
        cout << "Per的析构函数" << endl;
    }

    void show_Msg();  //输出信息

    //拷贝构造函数
    Per(Per &other)
    {
        this->name = other.name;
        this->age = other.age;
        h = new int;
        w = new int;
        *h = *(other.h);
        *w = *(other.w);
        cout << "Per的拷贝构造函数" << endl;
    }
};
class Stu
{
    float score;
    Per p1;
public:
    //void get_score();
    Stu()
    {
        cout << "Stu的无参构造函数" << endl;
    }
    Stu(float score,Per p1)
    {
        this->p1=p1;
        this->score = score;
        cout << "Stu的有参构造函数" << endl;
    }
    ~Stu()
    {
        //在析构之前释放堆区的空间
        cout << "Stu的析构函数" << endl;
    }
    Stu(Stu &other):score(other.score),p1(other.p1)
    {
        cout << "Stu的拷贝构造函数" << endl;
    }
    //输出信息
    void show_Stu_Msg();
};

//--------------------------------主函数------------------------------------
int main()
{
    Per s;          //无参构造
    Per s1(180,50); //有参构造,传递h和w的值
    s1.get_name("zhangsan"); //赋值
    s1.get_age(18);          //赋值
    s1.show_Msg();           //赋值

    Per s2 = s1;    //申请了一个Per的类对象,将s1的值初始化给s2
    s2.show_Msg();

    Stu p;         //无参构造
    Stu z1(98,s1); //有参构造
    z1.show_Stu_Msg(); //输出z1中的信息(float、Per p1)
    return 0;
}

//---------------------------------函数-------------------------------------
void Per::get_name(string name)//获取姓名赋值到结构体中
{
    this->name = name;
    cout << "姓名已保存: " << this->name << endl;
}

void Per::get_age(int age)    //获取年龄赋值到结构体中
{
    this->age = age;
    cout << "年龄已保存: " << this->age << endl;
}

void Per::show_Msg()//输出Per信息
{
    cout << "姓名:"<<name << " 年龄:"<<age << " 身高:"<<*h << " 体重:"<<*w << endl;
}

void Stu::show_Stu_Msg()//输出Stu信息
{
    p1.show_Msg();
    cout << "成绩为: " << score << endl;
}

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

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

相关文章

Spring练习30---用户列表的展示,其实用户列表的展示(上)

1、我们其实刚才分析了&#xff0c;用户表与表之间的关系是多对多&#xff0c;我们内部已经用到角色的信息了&#xff0c;那么在实体描述的&#xff0c;就得描述user实体和角色的关系 2、一个用户可以有多个角色 3、所以我在描述实体关系的时候&#xff0c;我咋写&#xff0c;…

玩转Mysql系列 - 第5天:DML操作汇总,确定你都会?

这是Mysql系列第5篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 DML(Data Manipulation Language)数据操作语言&#xff0c;以INSERT、UPDATE、DELETE三种指令为核心&#xff0c;分别代表插入、更新与删除&#xff0c;是必须要掌握的指令&#xff0c;DML…

【王道-第三章-内存管理】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 内存的基础知识一、什么是内存&#xff1f;有何作用&#xff1f;二、内存单位三、指令的工作原理四、三种装入方式1、绝对装入2、可重定位装入3、动态运行时装入 五、从写程序到程序运行六、链接的三种方式七、总结 No.…

stm32之8.中断

&#xff08;Exceptions&#xff09;异常是导致程序流更改的事件&#xff0c;发生这种情况&#xff0c;处理器将挂起当前执行的任务&#xff0c;并执行程序的一部分&#xff0c;称之为异常处理函数。在完成异常处理程序的执行之后&#xff0c;处理器将恢复正常的程序执行&#…

Docker容器:dockerfile创建 LNMP 服务+Wordpress 网站平台

文章目录 一.环境及准备工作1.项目环境2.服务器环境3.任务需求 二.Linux 系统基础镜像三.docker构建Nginx1.建立工作目录上传安装包2.编写 Dockerfile 脚本3.准备 nginx.conf 配置文件4.生成镜像5.创建自定义网络6.启动镜像容器7.验证 nginx 四.docker构建Mysql1. 建立工作目录…

华为数通方向HCIP-DataCom H12-821题库(单选题:61-80)

第61题 关于 BGP 的Keepalive报文消息的描述,错误的是 A、Keepalive周期性的在两个BGP邻居之间发送 B、Keepalive报文主要用于对等路由器间的运行状态和链路的可用性确认 C、Keepalive 报文只包含一个BGP数据报头 D、缺省情况下,Keepalive 的时间间隔是180s 答案&#xff…

QFileSystemModel类和QStringListModel类

QFileSystemModel介绍 QFileSystemModel是Qt框架中的一个模型类&#xff0c;用于在Qt应用程序中表示本地文件系统的目录结构。它提供了一种方便的方式来访问和操作文件系统中的文件和目录。下面是对QFileSystemModel的详细介绍&#xff1a; 目录结构的表示&#xff1a;QFileSy…

矩阵与图的关系:矩阵是图,图是矩阵

原文连接 线性代数最被低估的一个事实&#xff1a;矩阵是图&#xff0c;图是矩阵。 将矩阵编码为图是一种取巧的行为(cheat code)&#xff0c;它其使复杂的行为变得易于研究。 让我告诉你怎么做&#xff01; 1. 非负矩阵的有向图 &#xff08;The directed graph of a nonne…

ChatGPT影响大学生思想行为模式的三个维度

ChatGPT作为新一代AI技术的代表&#xff0c;深刻嵌入并影响着大学生的日常学习和生活场景&#xff0c;其在提升学习研究效率、拓宽认知阈限、重塑人机互动模式等方面带来极大突破&#xff0c;也会对大学生的思想行为模式产生潜在的影响&#xff0c;这些影响可以从个体、关系与社…

Linux设置虚拟内存扩容-偷鸡省钱小技巧-消耗服务器的存储内存转换成运行内存-之强行突破境界

阿丹&#xff1a; 这一段时间各大运营商都在相互内卷&#xff0c;趁着这股劲拿下了几个服务器。因为降本升效&#xff08;囊中羞涩&#xff09;的宗旨&#xff0c;买的服务器的内存并没有那么大所以偷鸡技巧这就来了。 设置虚拟内容-让4G内存up!up!up!到更高&#xff01; 操作…

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 7- 完成简单视图解析

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 7- 完成简单视图解析 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力…

SAP VK11/VK12 创建/更新价格记录

1、事务码VK11&#xff0c;创建物料价格 例如&#xff0c;客户10001&#xff0c;物料200001&#xff0c;价格120&#xff0c;有效期是2023.08.23-9999.12.31 现在有活动&#xff0c;在2023.08.23到2023.08.31想要维护一个活动价格100&#xff0c;而2023.09.01到9999.12.31还是…

Java开发中非常好用的工具

一、项目工具 1.1 IDE 主流的 Java 开发工具现在非 IntelliJ IDEA 莫属。前几年&#xff0c;可能 Eclipse 还能和 IDEA 一争高下&#xff0c;到了现在已经基本是 IDEA 的天下了。 就拿我自己来说吧&#xff0c;我最早用 IDEA&#xff0c;后来用了几年 Eclipse&#xff0c;再后…

EasyExcel实现多sheet文件导出

文章目录 EasyExcel引入依赖表结构学生表课程表教师表 项目结构下载模板实体类StudentVoCourseVoTeacherVo ControllerServiceEasyExcelServiceStudentServiceCourseServiceTeacherService ServiceImplEasyExcelServiceImplStudentServiceImplCourseServiceImplTeacherServiceI…

嵌入式是假风口?其实是你不够强!

嵌入式系统&#xff0c;作为一种集成电路技术的应用&#xff0c;近年来备受瞩目。然而&#xff0c;有人质疑嵌入式系统是否真的有那么大的市场前景&#xff0c;甚至认为这只是一个假风口。但实际上&#xff0c;嵌入式系统的发展潜力远不止于此&#xff0c;关键在于个人实力的提…

PI SSL证书导入

导语&#xff1a;最近在通过PI系统&#xff0c;做REST接口&#xff0c;对方地址是https的&#xff0c;调用时出现错误&#xff1a;【适配器框架出现异常: iaik.security.ssl.SSLCertificateException; Peer certificate relected by ChainVerifie】&#xff0c;此问题是因为这个…

SIP播放解码器

SIP-7101 SIP播放解码器 一、描述 SIP-7101是我司的一款壁挂式SIP网络播放终端&#xff0c;具有10/100M以太网接口&#xff0c;配置一路继电器输出和一路线路输出&#xff0c;可将内部音源输出到外接功放&#xff0c;可实现广播播放功能。SIP-7101作为网络SIP系统的播放终端&…

在Linux上安装redis7

1.检测虚拟机环境 1.1 bit检测命令&#xff1a;getconf LONG_BIT&#xff08;建议使用64bit做开发&#xff09; 1.2 gcc环境检测&#xff1a;gcc -v 如果不具备gcc环境&#xff0c;则使用yum -y install gcc- c命令进行c环境的安装 2.开始安装 2.1 下载redis&#xff1a; 进…

7、Vue 核心技术与实战 day07

1.1 vuex概述 1.2 构建 vuex [多组件数据共享] 环境 1.创建项目 vue create vuex-demo2.创建三个组件, 目录如下 |-components |--Son1.vue |--Son2.vue |-App.vue3.源代码如下 App.vue在入口组件中引入 Son1 和 Son2 这两个子组件 <template><div id"app&qu…

利用LLM模型微调的短课程;钉钉宣布开放智能化底座能力

&#x1f989; AI新闻 &#x1f680; 钉钉宣布开放智能化底座能力AI PaaS&#xff0c;推动企业数智化转型发展 摘要&#xff1a;钉钉在生态大会上宣布开放智能化底座能力AI PaaS&#xff0c;与生态伙伴探寻企业服务的新发展道路。AI PaaS结合5G、云计算和人工智能技术的普及和…