【发布时间】:2010-08-30 11:38:27
【问题描述】:
我有以下代码
class Test
{
public:
Test(){}
Test(int i) {}
void* operator new (size_t size)
{
void *p = malloc(size);
return p;
}
//void* operator new (size_t size, Test *p)
//{
// return p;
//}
};
int main() {
Test *p = new Test;
int i = 10;
new(p) Test(i);
}
以上代码不能在 Visual Studio 中编译,除非我取消注释掉重载的placement new 操作符函数。 如果我注释掉正常重载的新的,在这种情况下它也可以正常工作。 重载普通新运算符时是否必须重载placement new(如果该类需要使用placement new)
放置删除相关代码这里不显示。
【问题讨论】:
标签: c++