嵌入式学习记录6.5(内存分配/构造函数/析构函数)

目录

目录

一.c++动态内存分配回收

1.1分配

1.2回收

1.3new、delete和malloc、free之间的区别(重点)

二.构造函数

2.1功能,格式

2.2示例

三.析构函数

3.1功能,格式

3.2特点

3.3示例

四.思维导图/练习

4.1思维导图

4.2练习



一.c++动态内存分配回收

1.1分配

1.单个分配

格式:数据类型 *指针名 = new 数据类型

eg: int *p1 = new int;

//在堆区申请了int类型的大小空间,并将该空间的地址赋值给p1

2 连续分配

格式:数据类型 *指针名 = new 数据类型[个数]

eg: int *p2 = new int[5];

//在堆区空间连续申请了5int大小的空间

1.2回收

1. 单个回收

格式: delete 指针名

eg: delete p1;

2 连续回收

格式:delelte []指针名

 delete []p2;

1.3new、delete和malloc、free之间的区别(重点)

1> new、delete是关键字,而malloc和free是函数。

2> new申请空间时,可以初始化。而malloc不可以。

3> new申请空间以数据类型为单位,而malloc是以字节为单位。

4> 指针是什么数据类型,new就是申请什么数据类型。而malloc申请空间的返回值是void*,使用是需要强转。

5> new申请空间delete释放空间,区分格式。而malloc和free不区分。

6> new申请类对象空间时,会自动调用构造函数,而malloc不会自动调用。

7> delete释放类对象空间时,会自动调用析构函数,而free不会自动调用。

二.构造函数

2.1功能,格式

1.当实例化一个对象时,给类对象申请空间和初始化使用的。

2.类名(参数列表) { 函数体内容 }

3.调用时机

1> 栈区

何时实例化对象,何时自动调用构造函数

2> 堆区

何时使用new申请类对象空间 , 何时自动调用构造函数

2.2示例

#include <iostream>using namespace std;class Dog
{
private:string color;int age;string name;public:// 无参构造Dog(){cout << "Dog::无参构造函数" << endl;}//有参构造函数Dog(string color, int age, string name):color(color),age(age),name(name){cout << "Dog::有参构造函数" << endl;}void show(){cout << "颜色:" << color << "   年纪:" << age << "   品种:" << name << endl;}};int main()
{Dog d1; Dog d2("red", 1000, "二哈"); d2.show();return 0;
}

三.析构函数

3.1功能,格式

1.功能:当类对象生命周期结束时,自动调用析构函数,来给类对象回收资源(释放空间)。

2.格式 函数名:~类名 返回值:无,也无void 参数:无访问权限:一般为public

~类名() { 函数体内容; }

3.调用时机

1> 栈区

当类对象所在的函数结束时,自动调用析构函数来释放空间。

2> 堆区

何时使用delete释放类对象,何时自动调用析构函数

3.2特点

1> 系统会提供一个默认的析构函数,当程序员手动定义析构函数时,系统会取消默认提供。

2> 当类中有指针成员,并且申请堆区空间时,此时需要显性定义出析构函数,在析构函数中手动释放指针成员申请的空间,否则会造成内存泄漏。

3> 每个类中只能有一个析构

函数(原因:无参)

3.3示例

#include <iostream>using namespace std;
class Stu{
private:string name;int age;
public:Stu(string name,int age):name(name),age(age){}void show(){cout<<name<<" "<<age<<endl;}~Stu(){cout<<"析构函数"<<endl;cout<<this<<endl;}
};
int main()
{Stu stu1("zhangsan",18);Stu stu2("zhang",8);return 0;
}

四.思维导图/练习

4.1思维导图

4.2练习

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


#include <iostream>
//设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、
//体重,再设计一个Stu类,类中包含私有成员:
//成绩、Per类对象p1,设计这两个类的构造函数、析构函数。
using namespace std;
class Per{
public:Per(){cout<<"无参构造"<<endl;}void show(){cout<<name<<" "<<age<<" "<<height<<" "<<weight<<endl;}Per(string name,int age,double height,double weight):name(name),age(age),height(height),weight(weight){cout<<"1有参构造"<<endl;}~Per(){cout<<"Per析构函数"<<endl;}
private:string name;int age;double height;double weight;
};class Stu{
private:double score;Per p1;
public:Stu(double score,string name,int age, double height,double weight):score(score),p1(name,age,height,weight){cout<<"2有参构造"<<endl;}Stu(){cout<<"无参构造"<<endl;}~Stu(){cout<<"Stu析构函数"<<endl;}void show(){cout<<score<<endl;}
};int main()
{Per per2("zz",18,100,90);per2.show();Stu stu1(100,"zy",19,100,90);stu1.show();return 0;
}

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

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

相关文章

无需复杂步骤,Win11用户轻松开启旧版文件资源管理器!

在Win11电脑操作中&#xff0c;用户可以使用到新版的文件资源管理器&#xff0c;但总是有各种错误、卡顿等问题的出现&#xff0c;所以很多用户都不喜欢新版资源管理器。接下来小编给大家介绍一个简单的方法&#xff0c;帮助Win11用户快速开启旧版文件资源管理器。 具体操作如下…

【RISC-V】站在巨人的肩膀上——看开源芯片、软件生态、与先进计算/人工智能/安全的结合

目录 会议议程专题二&#xff1a;RISC-V与先进计算基于RISC-V的后量子密码芯片设计&#xff0c;刘冬生&#xff0c;华中科技大学存算一体集成芯片&#xff0c;刘琦&#xff0c;复旦大学面向端侧大模型计算的RISC-V矩阵扩展架构&#xff0c;复旦大学&#xff0c;韩 军 专题五&am…

开源基于Rust编写的Web服务器

基于 RUST 的 WEB 资源服务器 Github 地址 LTPP-GIT 地址 官方文档 该项目于 2024 年 5 月 1 日开始开发 预期功能 功能支持情况当前情况多线程支持是是服务支持配置化是是防盗链支持是是gzip 支持是是反向代理支持是是自定义状态码对应资源文件是是日志支持是是负载均衡支…

easyexcel模板填充列表

引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>编写模板 编写代码 public class FillData {private String name;private Double number;pu…

如何解决 Zabbix模板同步超时:解决运维技术领域的BugFailed to sync Zabbix template due to timeout

如何解决 Zabbix模板同步超时&#xff1a;解决运维技术领域的BugFailed to sync Zabbix template due to timeout 原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎…

LabVIEW源程序安全性保护综合方案

LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备&#xff1a;选择Sentinel HASP加密狗和支持TPM&#xff08;可信平台模块&#xff09;的计算机主板。 安装驱动和开发工具&#xff1a;安装Sentinel HASP加密狗的驱动程序和开发…

Java物业管理系统+数据库应用程序开发[JavaSE+JDBC+idea控制台+MySQL]

背景&#xff1a; 使用JavaSEJDBCMySQL技术实现一个物业管理系统&#xff0c;具体要求如下 物业管理系统需求&#xff1a; 需求分析 1.1用户需求分析 在进入系统之前&#xff0c;要进行身份确认&#xff0c;只有用户名和用户密码都相符的用户方可进入本系统&#xff0c;为…

SASAM软件架构静态分析法-系统架构师(六)

1、体系结构权衡分析法&#xff08;Architecture Tradeoff Analysis Method ATAM&#xff09;包含四个主要活动领域&#xff0c;分别是 场景和需求的收集、体系结构视图和场景的实现、&#xff08;&#xff09;、折中。基于场景的架构分析方法&#xff08;Scenarios-based Arch…

大归纳!!教你使用<string.h>的字符函数与字符串函数!!☑

这篇博客为你归纳了所有的字符函数和最常用的字符串函数&#xff0c;以及对应的模拟实现&#xff01;&#xff01;你可以直接循着目录跳到你需要的段落哦&#xff01;&#xff01;&#x1f60d; 目录 字符函数 字符分类 字符判断函数 islower——判断小写字母 isupper——…

JVM学习-Jprofiler

JProfiler 基本概述 特点 使用方便&#xff0c;界面操作友好对被分析的应用影响小(提供模板)CPU&#xff0c;Tread&#xff0c;Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket进行分析支持多种模式(离线、在线)的分析支持监控本地、远程JVM跨平台&#xff0c;拥…

纯血鸿蒙开发教程:如何实现运动饮食卡片效果

开发背景 人们对健康的要求越来越高&#xff0c;从单纯的健康饮食到健康运动&#xff0c;再到两者的结合。但是&#xff0c;饮食和运动之间的平衡一般人很难掌握&#xff0c;而我们这款 APP 将饮食、运动、以及自身身体状况&#xff08;如体脂、体重、内脂等&#xff09;有机结…

linux上VirtualBox使用

前言 最近想把唯一的windows系统装成linux&#xff0c; 但是确实存在一些特殊软件无法舍弃&#xff0c;所有装完linux需要用虚拟机装个windows 上来使用特定的一些软件&#xff08;不想用wine了&#xff09;。 还有对一些特定usb设备的透传&#xff0c;这样才能保证在虚拟机中…

【Linux】Linux工具——gdb

1. gdb 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像VC、BCB等IDE的调试&#xff0c;但如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能…

和平饭店短视频:成都科成博通文化传媒公司

和平饭店短视频&#xff1a;历史的沉淀与现代的演绎 随着短视频平台的兴起&#xff0c;越来越多的人开始通过镜头记录生活、分享故事。在众多短视频中&#xff0c;以“和平饭店”为主题的短视频独树一帜&#xff0c;以其独特的魅力吸引了大量观众的目光。成都科成博通文化传媒…

【常见报错】影刀小窗口消失-作者:【小可耐教你学影刀RPA】

现象描述&#xff1a; 影刀能够正常登录并运行&#xff0c;但是从常规模式切换到调度模式后能出现启动页&#xff0c;然后程序就退出了&#xff0c;查看影刀日志和事件查看器中的日志都没有任何异常消息 问题原因&#xff1a; 正常切换调度后会在窗口右下角出现一个机器人的小…

QT+FFmpeg+Windows开发环境搭建(加薪点)

01、Windows 环境搭建 FFMPEG官网:http://ffmpeg.org/ 02、下载4.2.1版本源码 源码:https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 03、下载4.2.1编译好的文件 下载已经编译好的FFMPEG)(迅雷下载很快) 网址:https://ffmpeg.zeranoe.com/builds/ 32位下载地址:(迅雷…

特征工程及python实现

一、特征构建 概述 从原始数据中构建新的特征&#xff0c;一般需要根据业务分析&#xff0c;生成能更好体现业务特性的新特征&#xff0c;这些新特征要与目标关系紧密&#xff0c;能提升模型表现或更好地解释模型。 方法 时间周期&#xff1a;不同的时间切片长度&#xff0…

超实惠的GPU云服务器安利!!

自己一个人抱着老笔记本学深度学习&#xff0c;没有GPU是真的难受。Colab用过&#xff0c;GPU稍微用用就被剥夺了。华为云在培训的时候也用过&#xff0c;好贵。现在学到大模型&#xff0c;cuda10.1举步维艰。 失眠在网上冲浪&#xff0c;刷到了潞晨云&#xff0c;一块六就能用…

SL4010 40V耐压 300W大功率升压IC 12V5A大功率UPS电源专用

在当今这个信息高速发展的时代&#xff0c;电力稳定已成为企业运营和个人生活的核心需求。UPS&#xff08;不间断电源&#xff09;作为电力的守护者&#xff0c;其性能和质量直接关系到我们的工作和生活能否顺畅进行。今天&#xff0c;我们为您推荐一款高性能的UPS应急电源芯片…

K8s service 底层逻辑

文章目录 K8s service 底层逻辑Kube-proxy 代理模式Service 请求情况Service-Iptables 模式iptables 规则介绍ClusterIP 模式分析NodePort 模式分析 Service- IPVS 模式 服务发现环境变量CoreDNSCoreDNS 策略ClusterFirst&#xff08;默认DNS策略&#xff09;CluterFirstWithHo…