C++内存管理和模板

一、内存管理

关键字:new   delete

我们知道,在C语言中内存的开辟和修改,要用到函数malloc/calloc等,而且要直自己判断内存开辟是否正确,所以在C++中,提供了两函数:new/delete

由于malloc无法很好的支持动态内存申请的自定义对象初始化,new/delete可以看作专门用来初始化自定义对象的关键字。

用new开辟自定义对象空间时,会调用自定义对象的构造函数并开空间

用delete释放自定义对象空间时,会自动调用自定义对象的析构函数并释放空间

对于多个对象则会调用多次构造析构函数。

                     

在给自定义类型初始化时,我们可以用到匿名对象的方式,也可以用隐式类型转换:

             

new失败后不会返回空,而死直接抱 异常,跳到catch函数中,如果没有实现catch函数则代码直接中止运行。其跳转方式和c中的goto很像。

在自定义类型中,new了之后要记得delete[],delete会在释放空间的时候连续调用析构来释放自定义类型中的内存,避免了内存泄漏。 自定义类型才会调用析构,指针属于内置类型,不会调用析构,而在定义p1时是指针,所以一定要配对使用,避免出错。

delete加不加阔哈的区别:

通常情况下,析构函数可以显示调用,构造函数不可以

但是我们可以通过定位new:

可以直接显示调用构造函数,在以后的内存池中有用。

二、模板

泛型编程

关键字:template  /typename/class

函数模板每次用完一个函数后面得函数就不能用了:

在写各种Swap时内部逻辑相同,只是类型不一样时可以用到:

对stack:

stack<int>st1;

stack<double>st2;

多类型:

通过强转可以确认类型再传到函数中,

或:

也可以达到一样的效果。

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

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

相关文章

【我的代码生成器】生成React页面类

有了数据表的结构信息&#xff0c;就能生成React 的页面类&#xff0c;快捷方便。 生成界面如下&#xff1a; 生成的React FrmUser.js页面如下&#xff1a; 只需再写里面的操作逻辑代码。

婴儿专用洗衣机有必要买吗?四大宝藏婴儿测评对比

幼龄时期的宝宝的衣物&#xff0c;是比较需要注意的时候。可能一不注意宝宝穿在身上就会有不适宜症状发生。所以宝妈们真的要随时观察&#xff0c;然后在宝宝洗衣服的这上面多下点功夫&#xff0c;不要让宝宝受到这种无谓的伤害。小婴儿的抵抗力比我们差很多。有些细菌、病毒可…

探索未来:智能客服产品架构的演进与创新

随着科技的迅猛发展和人工智能技术的不断成熟&#xff0c;智能客服已经成为了现代企业提供客户服务的重要方式。而智能客服产品的架构设计则直接影响着其在实际运营中的效果和用户体验。本文将探讨智能客服产品架构的演进历程以及未来的创新趋势。 1. 传统客服架构的局限性 传…

数据结构__顺序表

概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改 需要用到数组&#xff1a;数组的绝对优势&#xff1a;下标的随机访问&#xff08;因为物理空间连续&#xff09; a[i]等…

Linux下使用C语言实现线程池---代码及分析

线程池 相关文章 协议 Socket编程 高并发服务器实现 线程池 如果一个客户端建立连接使用创建一个线程用于处理这一个线程, 处理结束的时候把这一个线程删除, 这个时候会导致线程的创建以及销毁会消耗大量的时间 这时候可以一次性创建多个线程, 这几个线程统称线程池, 如果客户…

spark实验三-spark进阶编程

1&#xff0e;Spark编程统计各地区租房人数 实验目标&#xff1a; (1) 掌握在IntelliJ IDEA 中操作spark程序开发 (2) 打包程序提交集群运行 实验说明&#xff1a; 现有一份某省份各地区租房信息文件 house.txt&#xff0c;文件中共有8个数据字段&#xff0c;字段说明…

更改ip地址的几种方式有哪些

在数字化时代&#xff0c;IP地址作为网络设备的标识&#xff0c;对于我们在网络世界中的活动至关重要。然而&#xff0c;出于多种原因&#xff0c;如保护隐私、访问特定网站或进行网络测试&#xff0c;我们可能需要更改IP地址。虎观代理将详细介绍IP地址的更改方法与步骤&#…

基于Java停车场管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

欢乐钓鱼大师秒杀源码

gg修改器设置里面单选a内存然后去试试e类型搜索鱼竿的拉杆速度然后点修改点很多增加1然后游戏返回在进去看鱼竿拉速然后在修改器的里面找到拉速一样的数值其他恢复全移除不恢复移除会闪退然后点开保留下来的拉速数值点转到会有一堆数值你得找里面找到鱼竿的伤害距离等数值就可以…

[2024最新]MySQL-mysql 8.0.11安装教程

网上的教程有很多&#xff0c;基本上大同小异。但是安装软件有时就可能因为一个细节安装失败。我也是综合了很多个教程才安装好的&#xff0c;所以本教程可能也不是普遍适合的。 安装环境&#xff1a;win 10 1、下载zip安装包&#xff1a; MySQL8.0 For Windows zip包下载地…

vscode只修改几行,git却显示整个文件都被修改

原因&#xff1a;不同的操作系统默认的回车换行符是不一样的&#xff0c;有些编辑器会自动修改回车换行&#xff0c;然后就整个文件都变化了。 Unix/Linux/Mac使用的是LF&#xff0c;但Windows一直使用CRLF【回车(CR, ASCII 13, r) 换行(LF, ASCII 10, n)】作为换行符。 解决&a…

考研数学|跟「张宇」还是「武忠祥」?看这一篇就明白了

我想告诉你&#xff0c;选择张宇老师的课程也是一个很好的选择。而且24考研压中了很多类似的题目&#xff01; 推荐张宇老师的原因不仅是课程讲的比较好&#xff0c;更因为30讲这本书是比较系统的一本参考书。 张宇老师的数学课程一直以来都备受考生的推崇&#xff0c;他的讲…