从零开始的C++(七)

news2025/3/12 19:54:18

1.malloc、free和new、delete的区别:

1、.malloc、free是函数,new、delete是运算符。

2、malloc不会调用构造函数,new可以调用构造函数。

3、malloc开辟失败返回NULL,new失败会捕捉异常。

4、malloc不会自动计算类型大小,且返回void*的指针,需要强制类型转换,new可以计算类型大小同时不用强制类型转换。

5、new的底层逻辑是operator new 和 调用构造函数,operator new会开辟空间和捕捉异常。

6、malloc、free只是开辟、销毁空间,new在开辟空间后会调用构造函数,delete会先调用析构函数在释放开辟的空间。

2.C、C++的内存分布:

1、内存空间被划分为栈区、堆区、静态区、常量区,划分的目的是方便管理。

2、用字符数组接受一个字符串,对数组名解引用的数据是存放在栈区上的。一个字符指针指向一个字符串,对指针解引用的数据存放位置是字符串的存放位置(若字符串是常量字符串则存放在静态区)

3、用const修饰的变量存放位置与const无关,即可以忽略const再判断。(并非有const就在静态区)

3.new的异常检查:

在try后的大括号内进行异常检查,如果有异常则不会继续执行下一条指令,而是直接跳转到catch去执行,此处"e.what()"是打印异常原因。同时,如果try内没有异常的代码,则会跳过catch和catch后的大括号,去执行别的语句。

4.cout打印字符指针:

在C++中,除了字符类型的指针外,别的都是打印指针存放的内容,即地址。但字符指针默认是打印所指向的字符串的内容,直至遇到"\0"才停止。如果不希望打印字符串而是打印地址,可以强制类型转换,或者使用printf。

5.delete底层是先析构在进行free,对于内置类型数组,默认析构对内置不处理,因此用delete无影响(delete后面的"[]"在vs中的作用是让指针提前四个字节,这四个字节是保存数组的长度,如果没有"[]"则会少摧毁四个字节,就会报错)。

6.new创建数组会调用N次构造函数,delete会调用N次析构函数。

7.构造函数不能显示调用,析构函数可以显示调用。如果希望单独调用构造函数,可以new(指针)类名(参数列表),这就是显示调用构造函数。

8.模版:

关键词:template

用法:template<class t1,class t2,...>

函数模版:

1、模版定义的是类型,即上述的t1、t2等都是类型名。

2、编译器用模版生成对应的函数。

3、本质上是编译器根据模版对应生成函数(根据实参决定t)(函数模版的实例化)

4.如果一个t对应两个不同类型的函数,则会报错。解决方法:1.强制类型转换其中一个。2、显示实例化。 函数名<类型>+()。

类模版:

1、与函数模版的不同之处:编译器无法根据实参推断t,因此需要显示实例化。

用法:类名<类型>对象名

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

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

相关文章

Intewell工业操作系统的来龙去脉

Intewell操作系统是由科东软件自主研发的工业嵌入式实时操作系统&#xff0c;是新一代工业控制系统承上启下的平台&#xff0c;致力于解决工业现场层操作系统的自主可控、安全可信问题&#xff0c;助力企业数字化转型&#xff0c;实现工业互联网的数字化、网络化、智能化发展&a…

Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key

TC-dylogin 一定请选择 源码授权版 教程 第一步 将代码拷贝至您所需要的页面 该代码位置&#xff1a;pages/index.vue 第二步 修改appid和secret 第三步 获取appid和secret 获取appid和secret链接 注意事项 为了安全&#xff0c;我将默认的自己的appid和secret在云函数中删…

Mind Map:大语言模型中的知识图谱提示激发思维图10.1+10.2+10.7

知识图谱提示激发思维图 摘要介绍相关工作方法第一步&#xff1a;证据图挖掘第二步&#xff1a;证据图聚合第三步&#xff1a;LLM Mind Map推理 实验实验设置医学问答长对话问题使用KG的部分知识生成深入分析 总结 摘要 LLM通常在吸收新知识的能力、generation of hallucinati…

深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

软件测试/测试开发丨送福利AI大模型应用开发实训营来啦~ 文末领大模型学习资料

点此获取更多相关资料 因为 AIGC 持续火热&#xff0c;越来越多的企业都需要借助大模型来为自己的业务赋能&#xff0c;也就是产出适合自己公司业务情况的智能化产品&#xff0c;这是目前程序员必须要面对的难题和挑战。如果要在企业内部落地相关引用&#xff0c;就需要员工具…

国泰君安期货:基于分布式架构的智能推送系统,满足单日亿级消息处理量

中国期货市场正经历着从量变到质变、加速提档的过程。近五年来&#xff0c;新增期权期货交易品种过百个&#xff0c;国际化品种大幅增加&#xff0c;市场交易规模迅速扩大。2022 年期货行业单边成交量约 70 亿手&#xff0c;为 2018 年的 2.5 倍&#xff0c;占全球总成交量的 8…

想要开发一款游戏, 需要注意什么?

开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项&#xff1a; 游戏概念和目标&#xff1a; 确定游戏开发的核心概念和目标…

Python WebSocket自动化测试:构建高效接口测试框架!

为了更高效地进行WebSocket接口的自动化测试&#xff0c;我们可以搭建一个专门的测试框架。本文将介绍如何使用Python构建一个高效的WebSocket接口测试框架&#xff0c;并重点关注以下四个方面的内容&#xff1a;运行测试文件封装、报告和日志的封装、数据驱动测试以及测试用例…

数据结构题型14-二叉树的遍历

文章目录 1、先序遍历2、中序遍历3、后序遍历5、非递归遍历5、层次遍历 参考博客&#xff1a; 二叉树遍历方法——前、中、后序遍历&#xff08;图解&#xff09; 1、先序遍历 2、中序遍历 3、后序遍历 5、非递归遍历 5、层次遍历

练[FBCTF2019]RCEService

[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识 ​ json字符串格式&#xff0c;命令失效(修改环境变量)–绝对路径使用linux命令&#xff0c;%0a绕过preg_match函数&#xff0c;代码审计 解题思路 打开题目链接&#xff0c;发现…

二维码智慧门牌管理系统:让城市管理更高效、更便捷

文章目录 前言一、二维码智慧门牌管理系统的特点二、二维码智慧门牌管理系统的应用三、二维码智慧门牌管理系统的开发解决方案 前言 随着城市化进程的加速&#xff0c;城市管理面临着越来越多的挑战。其中&#xff0c;门牌号码的管理问题一直困扰着城市管理部门。为了解决这个…

【排序算法】堆排序详解与实现

一、堆排序的思想 堆排序(Heapsort)是指利用堆积树&#xff08;堆&#xff09;这种数据结构所设计的一种排序算法&#xff0c;它是选择排序的一种。它是通过堆&#xff08;若不清楚什么是堆&#xff0c;可以看我前面的文章&#xff0c;有详细阐述&#xff09;来进行选择数据&am…

投票礼物打赏流量主小程序开发

投票礼物打赏流量主小程序开发 投票功能&#xff1a;用户可以参与投票&#xff0c;选择自己支持的候选人或选项。礼物功能&#xff1a;用户可以给候选人或其他用户送礼物&#xff0c;以表示赞赏或支持。打赏功能&#xff1a;用户可以给候选人或其他用户打赏&#xff0c;以表示…

Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验)

文章目录 效果一览文章概述模型描述程序设计单步实验多步实验参考资料效果一览 文章概述 Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验) Transformer-singlestep.py 包含单步预测模型 Transformer-multistep.py 包含多步预测模型 这是单步预…

【kubernetes的三种网络】

kubernetes的三种网络 一、三种网络service网络&#xff08;service是虚拟IP地址&#xff09;pod网络&#xff08;pod的IP地址 docker容器的IP&#xff09;节点网络&#xff08;网络服务器上的物理网卡IP&#xff09; 二、其他网络flannel一、vxlan(隧道方案)1.定义2.优势3.工作…

软件定制开发的细节|网站搭建|APP小程序定制

软件定制开发的细节|网站搭建|APP小程序定制 在定制开发的过程中&#xff0c;一些小的细节往往能够影响到最终的产品质量和用户体验。下面我将为大家介绍一些软件定制开发的细节。 第一&#xff0c;明确需求。在定制开发之前&#xff0c;我们需要明确客户的需求和目标。只有明确…

C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)

文章目录 写在前面1. strlen1.1 函数介绍1.2 模拟实现 2. strcpy2.1 函数介绍2.2 模拟实现 3. strcat3.1 函数介绍3.2 模拟实现 4. strcmp4.1 函数介绍4.2 模拟实现 写在前面 本篇文章介绍了C语言中常用的字符串处理函数&#xff0c;包括strlen、strcpy、strcat和strcmp。文章…

Redis集群方案-主从复制-哨兵模式-分片集群

Redis集群方案 主从复制全量同步增量同步&#xff08;slave重启或者后期数据变化&#xff09; 哨兵模式服务状态监控哨兵选主规则 分片集群哈希槽 主从复制 单节点的Redis的并发能力是有上线的&#xff0c;要进一步提高redis的并发能力&#xff0c;就需要搭建主从集群&#xff…

第一节:vue3 配置路由

1.安装router插件npm install vue-router4或者yarn add vue-router4 2.新建router文件夹以及router里边的index.js&#xff1a;里边主要配置路由 import {createRouter,createWebHashHistory} from vue-router // 1.新的页面导入进来 import Home from ../view/Home.vue impor…

使用华为eNSP组网试验⑹-组建基于BGP的网络

BGP(Border Gateway Protocol -- 边界网关协议)是一种在自治系统之间动态交换路由信息、具有丰富的路由控制机制、稳定而安全的路由协议路由协议&#xff0c;一般部署在骨干(主要、核心)路由器。 BGP适用于大中型网络的组建&#xff0c;在很多企业当中都有应用。 一般情况下&am…