当前位置: 首页 > news >正文

C++ new/delete 重载

operator new/delete 重载

语法格式
void  *operator new(size_t);
void  operator delete(void *);
void  *operator new[](size_t);
void  operator delete[](void *);
#include <iostream>
using namespace std;class A
{
public:// 构造函数A(){// _x=1;// _y=2;// 在new中初始化了cout << "A()" << endl;}// 析构函数~A(){cout << "~A()" << endl;}// 成员函数,输出_x和_y的值void func(){cout << _x << "  " << _y << endl;}// 重载new操作符void *operator new(size_t size){ // size为8,因为A类的大小为8字节(两个int)cout << size << endl;cout << "operator new" << endl;void *p = malloc(size); // 分配内存((A*)p)->_x = 100; // 初始化_x((A*)p)->_y = 200; // 初始化_yreturn p; // 返回分配的内存指针}// 重载delete操作符void operator delete(void *p){ // 8cout << "operator delete" << endl;free(p); // 释放内存}// 重载new[]操作符void *operator new[](size_t size){cout << "operator new[]" << endl;cout << size << endl;void *p = malloc(size); // 分配内存cout << p << endl;return p; // 返回分配的内存指针}// 重载delete[]操作符void operator delete[](void *p){cout << "operator delete[]" << endl;cout << p << endl;free(p); // 释放内存}private:int _x; // 私有成员变量_xint _y; // 私有成员变量_y
};int main(){// 使用重载的new操作符创建A类的对象A *pa = new A;pa->func(); // 调用成员函数func,输出_x和_y的值delete pa; // 使用重载的delete操作符释放内存// 使用重载的new[]操作符创建A类的数组A *pb = new A[3];delete[] pb; // 使用重载的delete[]操作符释放内存return 0;
}

如果是用 operator new[]申请的空间,用 delete 释放会造成,只有第一个元素
释放的情形。

http://www.lryc.cn/news/414161.html

相关文章:

  • 读取连接中文件流和页面展示base64编码的文件
  • 【大模型从入门到精通4】openAI API 分类
  • 仓颉 -- 标识符 , 变量以及数据类型详解
  • CC++:贪吃蛇小游戏教程
  • C#中投影运算的深入解析与实例应用
  • HTML+CSS練習---空隙產生記錄
  • 【leetcode】相同的树、另一棵树的子树、翻转二叉树(利用深度优先遍历)
  • Linux系统窗口水印难点分析
  • LabVIEW与CANopen实现自动化生产线的设备控制与数据采集
  • 吃惊!这个Windows双系统方法逆天了|UEFI篇
  • 【C语言基础】C语言试题复习
  • 一拖三无线充底座-带给你极致的便利生活
  • 探索 Electron:打造深度书籍挖掘机的搜索体验
  • tomato靶场
  • 【Vue】computed计算对象不生效问题?
  • 算法小白的进阶之路(力扣9~12)
  • DOCKER容器中安装JDK1. 8 详细步骤
  • 计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • 深度学习常见的卷积和注意力机制文章集锦(持续更新)
  • 如何在立创EDA的PCB电路板导入logo图案
  • springboot集成canal
  • leetcode数论(2447. 最大公因数等于 K 的子数组数目)
  • 实现数组扁平化的几种方式
  • 3D打印技术正悄然重塑模具工业格局
  • 深入解析 KMZ 文件的处理与可视化:从数据提取到地图展示项目实战
  • YOLOv5轻量化改进 | backbone | 结合MobileNetV4(包含多个结构和使用方式)
  • 学习安卓开发遇到的问题
  • 数学建模--禁忌搜索
  • LeetCode 第136场双周赛个人题解
  • The operation was rejected by your operating system. code CERT_HAS_EXPIRED报错解决