c++重载运算符_C/C++编程笔记:运算符重载丨重载C++中的New和Delete运算符
new和delete运算符也可以像C ++中的其他运算符一样重载。New和Delete运算符可以全局重载,也可以在特定类中重载。
(1)如果使用某个类的成员函数来重载这些运算符,则意味着这些运算符仅针对该特定类才被重载。
(2)如果重载是在类外部完成的(即它不是类的成员函数),则只要您使用这些运算符(在类内或类外),都将调用重载的“ new”和“ delete”。这是全局超载。
重载new运算符的语法:
void *运算符new(size_t size);
重载的new运算符接收的大小为size_t类型,该大小指定要分配的内存字节数。重载的new的返回类型必须为void *。重载的函数返回一个指向分配的内存块开头的指针。
重载delete运算符的语法:
无效运算符delete(void *);
该函数接收一个必须删除的void *类型的参数。函数不应该返回任何东西。
注意:默认情况下,重载的new和delete运算符函数都是静态成员。因此,他们无权访问此指针。
重载特定类的new和delete运算符
重载大小为16的新运算符构造函数称为名称:Yash年龄:24重载删除运算符
注意:在上述新的重载函数中,我们已经通过new运算符分配了动态内存,但是它应该是global new运算符,否则它将以递归形式
无效* p = new student(); //这将递归,因为new将会一次又一次地被重载。
void * p = :: new student(); // 这是对的
new和delete运算符的全局重载
输出:
新操作员重载 数组:0 1 2 3 4 删除运算符重载
注意:在上面的代码中,在新的重载函数中,我们无法使用:: new int [5]分配内存,因为它将以递归方式进行。我们只需要使用malloc分配内存。
为什么要重载new和Delete?
(1)重载的new运算符函数可以接受参数;因此,一个类可以具有多个重载的新运算符功能。这使程序员在自定义对象的内存分配方面具有更大的灵活性。例如:
注意:代码不仅将为单个字符分配内存,还将使用#字符初始化分配的内存。
(2)重载的new或delete运算符还为类的对象提供了垃圾回收。
(3)可以在重载的新运算符函数中添加异常处理例程。
(4)有时,您希望操作员是new并删除它们,以执行一些编译器提供的版本不提供的自定义操作。例如,您可能会编写一个自定义运算符delete,以用0覆盖释放的内存,以提高应用程序数据的安全性。
(5)我们可以在新函数中使用realloc()函数动态地重新分配内存。
(6)重载的新运算符还使程序员能够从其程序中榨取一些额外的性能。例如,在一个类中,为了加快新节点的分配,维护了一个已删除节点的列表,以便在分配新节点时可以重新使用其内存。在这种情况下,重载的delete运算符会将节点添加到列表中删除的节点和重载的new运算符将从列表中分配内存,而不是从堆中分配内存以加速内存分配。当删除的节点列表为空时,可以使用堆中的内存。
另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!
C语言C++编程学习交流圈子,QQ群【1095293493】
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍分享:
编程学习视频分享:
c++重载运算符_C/C++编程笔记:运算符重载丨重载C++中的New和Delete运算符相关推荐
- c语言直接退出程序_C/C++编程笔记:C语言错误处理方法!如何更好地处理程序的错误?...
C语言被忽视的一些小东西!C语言基础教程之错误处理. C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据.在发生错误时,大多数的 C 或 UNIX 函数调 ...
- c++中的new与delete运算符
** C++语言中内存的管理使用new和delete运算符实现分别用于内存申请与内存释放** 1.new运算符 基本格式: 类型说明符 * 指针变量名 = new 类型说明符 格式二 类型说明符 * ...
- C++中的new和delete运算符(内存管理)
首先,作为一个程序员我们要学会如何管理内存,这里主要是堆内存,栈内存由系统管理, 在c中我们使用malloc和free,系统调用时使用sbrk函数 在c++中对于内存的管理,有两个运算符new和del ...
- status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本
相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神! 好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了! 一说指针,第一反应,指针是一种数据类型. c语言学习,重点就 ...
- .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...
一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的结构 先通过一个简单的例子,把C语 ...
- c++ double 只输出五位_C/C++编程笔记:C语言入门知识点(一),请收藏C语言最全笔记...
C语言简介 C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的.C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现. 原文链接: ...
- c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- c++输出方块_C/C++编程笔记:DFS 深度优先搜索的基本思想,含实例讲解
采用搜索算法解决问题时,需要构造一个表明状态特征和不同状态之间关系的数据结构,这种数据结构称为结点.不同的问题需要用不同的数据结构描述. 根据搜索问题所给定的条件,从一个结点出发,可以生成一个或多个新 ...
最新文章
- 如何画出高级酷炫的神经网络图?优秀程序员都用了这几个工具
- 分享一个 org.w3c.dom XML 封装
- 【数据结构-查找】2.字符串(逐步演绎过程,超级详解KMP算法)
- 游戏编程入门(1) -- 精灵 ISprite
- ITK:用常量填充图像
- 基于IPv6数据包分析
- jQuery选择器引擎和Sizzle介绍
- 谈 数学之美 和 看见
- 打印完全二叉树java_java 完全二叉树的构建与四种遍历方法示例
- pythonwrite连续写入_python文件写入write()的操作
- 360浏览器怎么添加应用 360安全浏览器应用添加教程
- mysql php 变量赋值,在MySQL UPDATE(PHP / MySQL)中使用变量
- 关于Java中被static修饰的静态变量 (类变量)
- SuperMap iServer安装过程详解
- php loadclass,Laravel如何实现自动加载类
- CTF常见的php函数
- 毕业论文每周报告进度计算机,计算机毕业论文进度安排怎么写
- 个人收集的IT技术网站集合,涉及web前后端,大数据,UI设计等。
- (MATLAB)把视频读得明明白白
- 啊,这该死的天气和路况,让我特靠谱爱车失灵了《打工人的那些事》
热门文章
- 创建虚拟环境 安装pytorch 0.3.1
- 小米8 SE和小米9 SE 开源 Android 9 Pie 内核代码
- Java练习 SDUT-1132_斐波那契数列
- day1-字符串拼接、表达式、break和continue
- Firewall防火墙应用案例
- WebApi2 知识点总结
- SpringBoot配置文件值注入方式
- 高效排序算法(希尔排序)
- 把Redis当作队列来用,真的合适吗?
- 越卖越涨?腾讯股票3月后大涨45%,超越“阿里”成中国第一,市值相当于14.3个百度!...