【发布时间】:2019-03-25 11:49:39
【问题描述】:
我有这个函数重载:
static bool returnNull;
void* operator new(const std::size_t size, const std::nothrow_t&) noexcept
{
void* address{ nullptr };
if (!returnNull)
{
address = operator new(size);
}
return address;
}
我想做一些类似的东西:
void* operator new(const std::size_t size, const std::nothrow_t&) noexcept
{
if (typeObject == AnimalClass)
return nullptr;
void* address{ nullptr };
if (!returnNull)
{
address = operator new(size);
}
return address;
}
因此,我需要此功能来对具有许多新调用的构建器进行单元测试,因此我希望基于应该分配的类来失败特定分配
【问题讨论】:
-
欢迎来到 StackOverflow。您的代码到底遇到了什么问题?
-
如果有帮助,您可以定义class-specific new and delete operators
-
不可能
-
你为什么想要这些
news中的一个?请注意,您是在邀请std::terminate,而不是捕获::new(size_t)抛出的任何std::bad_alloc -
这可能是一个有趣的问题。不幸的是,我认为该语言对此没有任何规定,因此它正在变成一个 x-y 问题。恕我直言,您应该退后一步,想知道为什么要在该测试中拒绝分配
AnimalClass,以及是否可以进行不同的设计。这条路绝对是死路一条。
标签: c++ c++11 types overloading new-operator