重载new和delete后调用构造函数和析构函数顺序

来源:互联网 发布:js函数创建表格 编辑:程序博客网 时间:2024/05/16 01:46

环境:VS2010

问题;探索重载new和delete后构造函数、修改函数的调用顺序

代码:

#include <iostream>using namespace std;class C{    float x,y;public:C(){ cout<<"调用构造函数"<<endl;}~C(){ cout<<"调用析构函数"<<endl;}    void show()    {  cout<<"x="<<x<<'\t'<<"y="<<y<<'\n';     }    void *operator new (size_t s)   {      void *p=new char [s];      cout<<"调用函数new(size_t s),分配空间为:"<<s<<'\n';      return p;    }    void operator delete (void *p)   {      delete (p);      cout<<"调用函数delete(void *p)\n";    }};int main(void){    C *p1;   p1=new C;   p1->show();   delete(p1);   return 0;}


执行结果:

 

 

总结:重载后new时先分配空间,再调用构造函数,delete时先调用修改函数,后释放空间

 

原创粉丝点击