【发布时间】:2010-10-11 22:26:19
【问题描述】:
我可以在带有参数的构造函数上调用 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 可以在非默认构造函数中正常工作。
【问题讨论】:
-
是 - 错误 C2660:'operator new':函数不采用 2 个参数。你有这个问题的答案吗?
-
没有构造函数参数的新放置是否在相同的上下文中工作?你还记得
#include <new>吗? -
毕竟我没有包含
!谢谢。
标签: c++ new-operator placement-new