Effective C++:条款9: 避免隐藏标准形式的new
因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数:
class x {public: void f(); static void * operator new(size_t size, // p缺省值为0 new_handler p = 0); // };x *px1 = new (specialerrorhandler) x; // 正确x* px2 = new x; // 也正确
无论哪种方法,如果以后想对“标准”形式的new定制新的功能,只需要重写这个函数。调用者重新编译链接后就可以使用新功能了。