加入收藏 | 设为首页 | 会员中心 | 我要投稿 上饶站长网 (https://www.0793zz.com.cn/)- 数据库平台、视觉智能、智能搜索、决策智能、迁移!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C++重载new及delete运算符详解

发布时间:2022-07-02 10:00:34 所属栏目:语言 来源:互联网
导读:内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。 两种重载形式的返回值相同,都是void *类型,并且都有
  内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。
 
  两种重载形式的返回值相同,都是void *类型,并且都有一个参数,为size_t类型。在重载 new 或 new[] 时,无论是作为成员函数还是作为全局函数,它的第一个参数必须是 size_t 类型。size_t 表示的是要分配空间的大小,对于 new[] 的重载函数而言,size_t 则表示所需要分配的所有空间的总和。size_t 在头文件 <cstdio> 中被定义为typedef unsigned int size_t;,也就是无符号整型。当然,重载函数也可以有其他参数,但都必须有默认值,并且第一个参数的类型必须是 size_t。
 
  两种重载形式的返回值都是 void 类型,并且都必须有一个 void 类型的指针作为参数,该指针指向需要释放的内存空间。
 
  当我们以类的成员函数的形式重载了new 和 delete 操作符,其使用方法如下:C * c = new C;  //分配内存空间//TODO:delete c;  //释放内存空间如果类中没有定义 new 和 delete 的重载函数,那么会自动调用内建的 new 和 delete 运算符。

(编辑:上饶站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读