使用REPLACEMENT NEW来调用对象的构造函数,从而实现任意内存位置的对象实例化....

来源:互联网 发布:免费动态解析80端口 编辑:程序博客网 时间:2024/06/05 09:41

转自:http://www.cppblog.com/johndragon/archive/2007/03/20/20209.html
另外参考:
如何让new操作符不分配内存,只调用构造函数
http://hi.baidu.com/math_haifeng/blog/item/0d10dd0b341a7737b0351d3a.html

#include <new>
template <class T>
inline T * CALL_CON( T * ptMem )
{
 T * pt = new(ptMem)T;
 return pt;
}

template <class T>
inline void CALL_DEC( T * pt )
{
 pt->~T();
}



使用方法:

class CTest
{
public:
   CTest():m_iTest(100){}
protected:
   int m_iTest;
};

....

char testBuffer[256];

CTest * pTest = CALL_CON( (CTest*)testBuffer );
....
CALL_DEC( pTest );

原创粉丝点击