C++ new delete运算符重载
2021/6/2 12:22:53
本文主要是介绍C++ new delete运算符重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
每个类中都包含默认的new, delete, C++程序员可以对new和delete进行重载,达到想要的功能。
重载new操作符格式如下
static void* operator new(size_t t){ return xxx;}
如果直接返回nullptr, 那么这个类就无法进行new操作了。
重载delete操作符格式如下:
static void operator delete(void* p){}具体应用
下面是在Test类中重载new、delete, 代码如下:
#include using namespace std;class Test{public: Test() { cout << "我是构造函数" << endl;; } ~Test() { cout << "我是析构" << endl; } //重载new操作符 static void* operator new(size_t t) { cout << "调用重载的new" << endl; Test* p = ::new Test(); return p; } //重载delete static void operator delete(void* p) { cout << "调用重载的delete" << endl; ::delete p; }};int main(){ Test* p1 = new Test(); delete p1; return 0;}
在一些开源库中,经常会对new, delete进行重载,已达到内存自动管理的效果。
这篇关于C++ new delete运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享