C++ new、delete(new[]、delete[])操作符重载需要注意的问题
很多人完全没有意识到 operator new、operator delete、operator new[]、operator delete[] 成员函数会被继承。有些时候,我们只想为指定的类设置自定义的 operator new 成员函数,而不希望影响到子类的工作。《Effective C++ Third Edition》提供了如下的方案:这样处理的一个前提是:认为子类的大小一定大于父类。对于 operator new[] 来说,我们很难通过上面的方式检查到底是父类还是子类调用了操作符。通过 operator new[] 操作符的参数,我们无法得知分配的元素的个数,无法得知分配的每个元素的大小。这不是个很简单的事。但是同样的,对于 delete[] 操作符工作就不正常了:
下载地址
用户评论