new与delete的重载
来源:互联网 发布:好看的手写字体知乎 编辑:程序博客网 时间:2024/05/20 06:50
new与delete的重载
#include "stdafx.h"#include <iostream>using namespace std;#include <stdlib.h>#include <string.h>//new 和delete的重载//new new[] delete delete[]//适用于极个别情况需要定制的时候才用的到。一般很少用//声明可以不加 参数//void *operator new(size_t);//void operator delete(void *);//void *operator new[](size_t);//void operator delete[](void *);class A{public:A(){cout << "A()" << endl;}~A(){cout << "~A()" << endl;}void func(){cout << "i am a function" << endl;}//size_t 为 unsigned intvoid *operator new(size_t size) //重载之后取代全局{cout << "size= " << size << endl;cout << "void *operator new(size_t)" << endl;void* p = malloc(size);memset(p, 0, size);((A*)p)->data = 100; //代表可以在实现定制化的函数内初始化//可以实现自我早期的定制 早于构造器初始化return p;}void operator delete(void *p) //重载之后取代全局{cout << "void operator delete(void *)" << endl;free(p);}void *operator new[](size_t size){cout << "size= " << size << endl; //没懂打印出为啥是24cout << "void *operator new[](size_t size)" << endl;void* p = (void*)malloc(size);return p;}void operator delete[](void * p){cout << "void operator delete[](void *)" << endl;free(p);}int data;};//定制化,我要实现A类对象的生成,用我自己定制的new delete//而其他仍用系统的 就把要实现的函数作为类A的成员函数int _tmain(int argc, _TCHAR* argv[]){A* pa = new A; //new 会调用构造器pa->func();cout << pa->data << endl;delete pa; //delete 会调用析构器//A* pm=(A*)malloc(sizeof(A)); //malloc不会调用构造器//free(pm); //free不会调用析构器cout << "==============================" << endl;A* pb = new A[5];delete[]pb;cout << "===========================" << endl;int *p = new int; //系统的return 0;}
阅读全文
0 0
- new与delete的重载
- new delete的局部重载
- 类的operator new与operator delete的重载
- 类的operator new与operator delete的重载
- 类的operator new与operator delete的重载
- 类的operator new与operator delete的重载
- c++中new与delete的重载--(boolan)
- 驱动程序中重载new与delete
- 重载new/delete要遵循的规则
- 重载new/delete要遵循的规则
- 重载new/delete要遵循的规则
- 重载new/delete要遵循的规则
- 重载new/delete要遵循的规则
- 运算符new和delete的重载
- C++ new 和 delete 的重载
- new和delete函数的重载
- 实现new和delete的重载
- operator new / operator delete等的重载
- TreeSet以及存储自定义类重写compareTo()
- 第十五周作业:Java多线程
- spark(7)-spark RDD的创建(course15)
- 四种嵌入式操作系统安全启动分析(unix、linux、qnx、vxworks)
- Vue.js 2.0和Cordova开发webApp环境搭建
- new与delete的重载
- 看图秒懂 | 昨天才发布的容器新项目Kata到底能干啥?
- 关于Linux内核引入的accept_local参数的一个问题
- 【SSH问题】open /home/oracle/.ssh/id_rsa failed: Permission denied.
- react踩坑之路由
- Kubernetes峰会首日直击 | 软件基础设施支撑云原生应用
- qt QPainter QPropertyAnimation 实现翻转
- 转载自虎嗅,mark一下,国际上流行着五种电动车充电接口和标准
- JDK官方下载