我想使用运算符(std::nothrow)的地址为新地址。

typedef void* (*NewFunc)(size_t);
NewFunc newAddr = &operator new; // OK

typedef void* (*NewFuncNoThrow)(size_t, const std::nothrow_t&);
NewFuncNoThrow newAddrNoThrow = &operator (std::nothrow) new; // Syntax error ')'

我上面最后一行的正确语法应该是什么?

最佳答案

与上一个相同:

NewFuncNoThrow newAddrNoThrow = &operator new;
operator new是重载的函数名称。在需要转换为特定类型时将解决该问题-该类型为NewFuncNoThrow,它将引导它进行正确的重载。

Live example

关于c++ - 用于获取nothrow运算符的地址的C++语法new,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23336351/

10-10 03:30