条款9:避免隐藏标准形式的new

如果在类里增加一个带多个参数的operator new函数,则标准的operator new(size_t size)将会屏蔽

解决方法如下:

1. 如果写了一个多带参数的operator new函数,则也写一个和标准new同样参数的new函数

class X
{
private:
	//...
public:
	void* operator new(size_t size, new_handler handler)
	{
		//...
	}
	void* operator new(size_t size)
	{
		return ::operator new(size);
	}
};

2. 写带多个参数的operator new函数时,为多余的参数提供默认值

class Y
{
private:
	//...
public:
	void* operator new(size_t size, new_handler handler = NULL)
	{
		//...
	}
};


posted @ 2012-06-12 17:19  $逝水无痕$  阅读(120)  评论(0编辑  收藏  举报