48、C++/堆区动态内存管理 类中特殊成员函数学习20240313

一、设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

代码:

#include <iostream>using namespace std;
//封装 Per 类
class Per
{
private:string name; //字符串类型姓名int age;  //整型年龄double *height;  //浮点指针类型 身高double weight;  //浮点型体重
public://构造函数及初始化列表 指针类型身高在堆区申请内存存放数据Per(string name="",int age=0,double height=0,double weight=0):name(name),age(age),height(new double(height)),weight(weight){cout << "Per::构造函数" << endl;}//析构函数~Per(){   //释放类对象前 先释放堆区空间delete height;cout << "Per::析构函数" << endl;}//拷贝构造函数 (深拷贝,先在堆区申请空间并将要拷贝的数据放入,然后让本次新的指针变量height指向这片地址)Per(const Per &other):name(other.name),age(other.age),height(new double(*(other.height))),weight(other.weight){cout << "Per::拷贝构造函数" << endl;}void show()//展示内容{cout << "Per::name:" << name;cout << " Per::age = " << age;cout << " Per::*height = " << *height;cout << " Per::weight = " << weight << endl;}
};
class Stu //封装 Stu 类
{
private:int score; //整型成绩Per p1;     //Per 类型的p1
public://构造函数及初始化列表 Per 类的成员由p1(..)调用其构造函数完成Stu(int score,string name,int age,double height,double weight):score(score),p1(name,age,height,weight){cout << "Stu::构造函数" << endl;}~Stu()//析构函数 先构造的后析构{cout << "Stu::析构函数" << endl;}//拷贝构造函数 p1(other.p1)调用Per类 拷贝构造函数完成Stu(const Stu &other):score(other.score),p1(other.p1){cout << "Stu::拷贝构造函数" << endl;}void show()//展示信息{cout << "Stu::score = " << score << endl;p1.show();}
};int main()
{//实例化一个s1对象 自动调用有参构造函数Stu s1(99,"张三",20,1.78,75.5);s1.show();cout << "----------------------" << endl;//实例化一个s2对象 并使用s1给它初始化Stu s2(s1);//自动调用拷贝构造函数s2.show();//类的生命周期结束 会自动调用析构函数 回收类对象资源return 0;
}

运行:

思维导图

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

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

相关文章

2024-03-14学习笔记(YoloV9)

1.认知越高的人&#xff0c;越敬畏因果 摘要&#xff1a;本文讲述了认知越高的人越敬畏因果的道理。通过故事和名人案例&#xff0c;阐述了敬畏因果对于个人成长和成功的重要性。文章强调了遵循规律、不走捷径、正向思维的重要性&#xff0c;以及思维、行动、习惯、性格和命运…

走进volatile的世界,探索它与可见性,有序性,原子性之间的爱恨情仇!

写在开头 在之前的几篇博文中&#xff0c;我们都提到了 volatile 关键字&#xff0c;这个单词中文释义为&#xff1a;不稳定的&#xff0c;易挥发的&#xff0c;在Java中代表变量修饰符&#xff0c;用来修饰会被不同线程访问和修改的变量&#xff0c;对于方法&#xff0c;代码…

Arduino RP2040 LittleFS的使用介绍

Arduino RP2040 LittleFS的使用 &#x1f4cc;RP2040基于Earle F. Philhower, III的开发核心固件&#xff1a;https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json&#x1f388;相关开发文档在线说明&#xff1a;https://ardu…

每日一题——LeetCode2789.合并后数组中的最大元素

方法一 倒序遍历&#xff1a; 将数组倒序过来看&#xff0c;就是从最后一个数开始&#xff0c;如果它前面一个数小于等于它就可以把前面一个数吃掉同时加上前一个数的值形成一个新的数&#xff0c;如果碰到一个更大的数就吃不动了&#xff0c;那么就换那个更大的数去继续吃前面…

实现两个超长正整数(每个最长80位数字)的减法运算。

定制魏&#xff1a;QTWZPW&#xff0c;获取更多源码等 [问题描述] 编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 [输入形式] 从键盘读入两个整数&#xff0c;要考虑输入高位可能为0的情况(如00083)。 1.第一行是超长正整数A; 2.第二行是超长正整数B; [输出形式] …

ts版本微信小程序在wxml保存文件不刷新页面的解决办法

将project.config.json中的skylineRenderEnable改为false "skylineRenderEnable": false

惯导系统静止初始化方法与代码实现并在gazebo中测试

惯导系统静止初始化方法与代码实现并在gazebo中测试 前言静止初始化方法惯导静止初始化实现代码在gazebo中进行测试 前言 在进行GPS加IMU的组合导航或者Lidar加IMU的组合导航时&#xff0c;用EKF或者ESKF的滤波方法时&#xff0c;需要提前知道惯导的测量噪声、初始零偏、重力方…

POJO简介

文章目录 简介POJO与ELB的区别POJO真正的意思 常见的POJO类DTODAOPOVOEntity 简介 什么是POJO&#xff1f;POJO&#xff08;Plain Ordinary Java Object&#xff09;简单的Java对象&#xff0c;实际就是普通JavaBeans&#xff0c;是为了避免和EJB(EJB是Enterprise Java Beans技…

滑模控制算法(SMC)讲解-案例(附C代码)

目录 一、滑模控制算法的基本原理 1)滑模面(Sliding Surface)的设计 2)达到条件(Reaching Condition)

Ubuntu 22.04 Nvidia Audio2Face Error:Failed to build TensorRT engine

背景 1.在Ubuntu22.04上安装Audio2Face后启动&#xff0c;嘴形不会实时同步。控制台显示如【图一】&#xff1a; 【图一】 2.log日志如下: Error: Error during running command: [‘/home/admin/omniverse/libs/deps/321b626abba810c3f8d1dd4d247d2967/exts/omni.audio2fac…

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.11函数

在单片机开发中&#xff0c;一般使用C语言进行编程&#xff0c;C语言提供了一种结构化的编程方法&#xff0c;能有效地管理和控制硬件资源。函数是C语言中的一个基本构建块&#xff0c;它允许开发者将程序分解成更小、更易于管理的部分。 1 函数的基本概念 1&#xff09;定义…

【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer

DiffSpeaker: 使用扩散Transformer进行语音驱动的3D面部动画 code&#xff1a;GitHub - theEricMa/DiffSpeaker: This is the official repository for DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer paper&#xff1a;https://arxiv.org/pdf/…

clickhouse学习笔记01(小滴课堂)

老王经历-数据库架构演变历史 你是否能分清OLTP和OLAP系统 急速掌握-数据库里面行存储和列式存储 新一代列式存储ClickHouse介绍和应用场景说明 Linux服务器容器化部署ClickHouse实战 记得要在安全组里配置开放端口号。 到这我们就安装完了。 简单使用&#xff1a; 创建你的第…

鲲鹏920集成100G网卡RDMA测试说明

1、背景介绍 目前鲲鹏920处理器内集成了两个100G网卡&#xff0c;支持RDMA&#xff08;Roce V2&#xff09;&#xff0c;说明如下 为了测试网卡性能&#xff0c;需要进行RDMA测试&#xff0c;两块鲲鹏920的板卡通过盛科的8180 100G交换芯片实现交换功能。 盛科8180芯片介绍如下…

2.亿级积分数据分库分表:增量数据同步之代码双写,为什么没用Canal?

1.亿级积分数据分库分表&#xff1a;总体方案设计 上一篇博客中写了一下积分数据分库分表的总体方案设计&#xff0c;里面说了采用应用程序代码双写的方式实现的增量数据同步&#xff0c;本篇就对这一块进行一些细化的介绍&#xff0c;包括&#xff1a; 为什么不用Canal监听数…

Acwing:730. 机器人跳跃问题(二分法)

问题描述&#xff1a; 题目链接&#xff1a;730. 机器人跳跃问题 机器人正在玩一个古老的基于 DOS 的游戏。游戏中有 N1 座建筑——从 0 到 N 编号&#xff0c;从左到右排列。编号为 0 的建筑高度为 0个单位&#xff0c;编号为 i的建筑高度为 H(i) 个单位。 起初&#xff0c;机…

【S5PV210】 | GPIO编程

【S5PV210】 | GPIO编程 时间:2024年3月17日22:02:32 目录 [TOC] 1.参考 1.s5pv210开发与学习:1.5之裸机汇编流水点灯_s5pv210汇编指令集-CSDN博客 2.s5pv210开发与学习:1.8之裸机蜂鸣器实验_pv210 蜂鸣器-CSDN博客 3.s5pv210开发与学习:1.9之裸机按键控制LED_s5pv210 按键…

机器学习——压缩网络作业

文章目录 任务描述介绍知识蒸馏网络设计 Baseline实践 任务描述 网络压缩&#xff1a;使用小模型模拟大模型的预测/准确性。在这个任务中&#xff0c;需要训练一个非常小的模型来完成HW3&#xff0c;即在food-11数据集上进行分类。 介绍 有许多种网络/模型压缩的类型&#xff0…

法律数字化与AI大模型的结合正在带来行业新变革

法律数字化与AI大模型的结合&#xff0c;正在逐步改变法律行业的传统运作方式&#xff0c;为法律从业者提供更加高效、精准的服务&#xff0c;同时也为公众提供了更加便捷的法律咨询和解决方案。 蚓链AI大模型在法律数字化过程中起到了关键作用。AI模型通过自然语言处理、机器…

【自学用】B站python爬虫课程笔记(Q11-15)

下面是学习的网址&#xff1a; ​​​​​​【Python爬虫】 11、class定义类别的一些问题 我写的"可爱小猫类别"的代码如下&#xff1a; class CuteCat:def __init__(self, cat_name, cat_age, cat_color, cat_temper):# cat_name name# self_name cat_name #…