13

我可以在带有参数的构造函数上调用 C++ 放置 new 吗?我正在实现一个自定义分配器,并希望避免将功能从非默认构造函数移动到一个 init 函数中。

class CFoo
{
public:
    int foo;
    CFoo()
    {
        foo = 0;
    }

    CFoo(int myFoo)
    {
        foo = myFoo;
    }
};

CFoo* foo = new (pChunkOfMemory) CFoo(42);

我希望使用第二个构造函数在 pChunkOfMemory 构造一个 CFoo 类型的对象。使用 operator new 时,我是否只使用默认构造函数?

解决了!我没有#include <new>。在此之后,调用placement ::new 可以很好地使用非默认构造函数。

4

1 回答 1

20

要使用placement new,您需要包含标题<new>

#include <new>

operator new否则没有定义的放置形式。

于 2010-10-11T22:32:21.220 回答