C/C++教程

C++ new delete运算符重载

本文主要是介绍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运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!