greeksforgreeks上一个题解释new的时候编译器都会做什么

来源:互联网 发布:excel2007统计重复数据 编辑:程序博客网 时间:2024/05/12 15:53

看下面代码输出:

#include<stdlib.h>#include<iostream> using namespace std; class Test {public:    void* operator new(size_t size);    void operator delete(void*);    Test() { cout<<"\n Constructor called"; }    ~Test() { cout<<"\n Destructor called"; }}; void* Test::operator new(size_t size){    cout<<"\n new called";    void *storage = malloc(size);    return storage;} void Test::operator delete(void *p ){    cout<<"\n delete called";    free(p);} int main(){    Test *m = new Test();    delete m;    return 0;}


new的时候先分配内存,然后调用构造函数进行初始化;

delete时候先调用析构函数做清理工作,然后释放内存。


这里重载了new delete后看的更清楚了。

0 0
原创粉丝点击