可以重载新的操作符接收args传递给对象的构造函数吗?

时间:2011-12-08 18:50:35

标签: c++ qt operator-overloading new-operator qimage

我看到很多C ++库以这种方式处理动态内存分配:

Qimage* _image = new QImage(width, height, QImage::Format_RGB888);
if (!_image)
{ 
    // Failed!
}

我发现有趣可以使用像if (!_image)之类的简单代码检查对象是否成功分配。

1)我想知道这是否是标准new原生功能,或者只有在您使用自己的实现重载operator new时才有可能。

2)在这种情况下我将如何实现operator new接收对象构造函数的参数,并在宽度&&身高是0?

我能做到这一点吗?

1 个答案:

答案 0 :(得分:4)

你看到的是错的。 new doesn't return null anymore but throws std::bad_alloc instead

Overloading new有一个例子。 You don't need to deal with constructor arguments

您尝试做的事情是在C ++ 11中通过 make_shared 完成的