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运算符相关推荐

  1. c语言直接退出程序_C/C++编程笔记:C语言错误处理方法!如何更好地处理程序的错误?...

    C语言被忽视的一些小东西!C语言基础教程之错误处理. C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据.在发生错误时,大多数的 C 或 UNIX 函数调 ...

  2. c++中的new与delete运算符

    ** C++语言中内存的管理使用new和delete运算符实现分别用于内存申请与内存释放** 1.new运算符 基本格式: 类型说明符 * 指针变量名 = new 类型说明符 格式二 类型说明符 * ...

  3. C++中的new和delete运算符(内存管理)

    首先,作为一个程序员我们要学会如何管理内存,这里主要是堆内存,栈内存由系统管理, 在c中我们使用malloc和free,系统调用时使用sbrk函数 在c++中对于内存的管理,有两个运算符new和del ...

  4. status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  5. c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本

    相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神! 好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了! 一说指针,第一反应,指针是一种数据类型. c语言学习,重点就 ...

  6. .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...

    一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的结构 先通过一个简单的例子,把C语 ...

  7. c++ double 只输出五位_C/C++编程笔记:C语言入门知识点(一),请收藏C语言最全笔记...

    C语言简介 C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的.C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现. 原文链接: ...

  8. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  9. c++输出方块_C/C++编程笔记:DFS 深度优先搜索的基本思想,含实例讲解

    采用搜索算法解决问题时,需要构造一个表明状态特征和不同状态之间关系的数据结构,这种数据结构称为结点.不同的问题需要用不同的数据结构描述. 根据搜索问题所给定的条件,从一个结点出发,可以生成一个或多个新 ...

最新文章

  1. 如何画出高级酷炫的神经网络图?优秀程序员都用了这几个工具
  2. 分享一个 org.w3c.dom XML 封装
  3. 【数据结构-查找】2.字符串(逐步演绎过程,超级详解KMP算法)
  4. 游戏编程入门(1) -- 精灵 ISprite
  5. ITK:用常量填充图像
  6. 基于IPv6数据包分析
  7. jQuery选择器引擎和Sizzle介绍
  8. 谈 数学之美 和 看见
  9. 打印完全二叉树java_java 完全二叉树的构建与四种遍历方法示例
  10. pythonwrite连续写入_python文件写入write()的操作
  11. 360浏览器怎么添加应用 360安全浏览器应用添加教程
  12. mysql php 变量赋值,在MySQL UPDATE(PHP / MySQL)中使用变量
  13. 关于Java中被static修饰的静态变量 (类变量)
  14. SuperMap iServer安装过程详解
  15. php loadclass,Laravel如何实现自动加载类
  16. CTF常见的php函数
  17. 毕业论文每周报告进度计算机,计算机毕业论文进度安排怎么写
  18. 个人收集的IT技术网站集合,涉及web前后端,大数据,UI设计等。
  19. (MATLAB)把视频读得明明白白
  20. 啊,这该死的天气和路况,让我特靠谱爱车失灵了《打工人的那些事》

热门文章

  1. 创建虚拟环境 安装pytorch 0.3.1
  2. 小米8 SE和小米9 SE 开源 Android 9 Pie 内核代码
  3. Java练习 SDUT-1132_斐波那契数列
  4. day1-字符串拼接、表达式、break和continue
  5. Firewall防火墙应用案例
  6. WebApi2 知识点总结
  7. SpringBoot配置文件值注入方式
  8. 高效排序算法(希尔排序)
  9. 把Redis当作队列来用,真的合适吗?
  10. 越卖越涨?腾讯股票3月后大涨45%,超越“阿里”成中国第一,市值相当于14.3个百度!...