有什么办法可以全局closuresnew
运营商的例外情况吗? 如果有不止一个,哪个最好?
我试过这个,但我真的不知道在这:
#include <new> using std::nothrow;
我试着用“使用std :: nothrow;”来search,但是没有结果。
我正在使用MSVC 2010。
当然我知道new (std::nothrow) myClass();
不会。这会破坏很多代码,例如在标准头文件中,这依赖于new
投掷。
C ++委员会意识到通过在单一名称下标准化几十种几乎兼容的语言而引入的危险,只有5个这样的选项,您已经拥有32种不兼容的语言。
#define NEW1(type, ...) new (std::nothrow) type(__VA_ARGS__) #define NEW(type, size, ...) new (std::nothrow) type[size](__VA_ARGS__)
//用法:
int *a=NEW1(int), //single non-initialized int *b=NEW1(int, 42), //single int with value 42 *c=NEW(int, 42); //array of ints made of 42 elements delete a; delete b; delete[] c;