Chr*_*ton 12 c++ placement-new new-operator
我可以在带有参数的构造函数上调用C++ placement new吗?我正在实现一个自定义分配器,并希望避免将功能从非默认构造函数移动到init函数.
class CFoo
{
public:
int foo;
CFoo()
{
foo = 0;
}
CFoo(int myFoo)
{
foo = myFoo;
}
};
CFoo* foo = new (pChunkOfMemory) CFoo(42);
Run Code Online (Sandbox Code Playgroud)
我希望使用第二个构造函数在pChunkOfMemory上构造CFoo类型的对象.当使用operator new时,我只使用默认构造函数?
解决了!我没有#include <new>.在此之后,调用placement :: new与非默认构造函数一起工作正常.
GMa*_*ckG 19
要使用placement new,您需要包含标题<new>:
#include <new>
Run Code Online (Sandbox Code Playgroud)
否则,operator new未定义放置形式.