环境: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时先调用修改函数,后释放空间。
本文详细解析了使用VS2010进行编程时,重载new和delete操作符后,构造函数与修改函数的调用顺序,并通过代码实例展示了这一过程。
3209

被折叠的 条评论
为什么被折叠?



