新/删除"覆盖"与"过载"

spc*_*mrn 5 c++ overriding overloading new-operator delete-operator

我一直以为......

  • 重写意味着重新实现基类中的函数(相同的签名),而
  • 重载意味着实现具有相同名称但不同签名的函数

...并且感到困惑,因为有时人们只是不关心差异.

关于新/删除:它们是否超载或被覆盖?

一个主意:

  • 在Class = overload中实现new/delete运算符
  • 重新实现全局new/delete = override

任何更正/建议/异议?并随意标记"hairplitting"的问题......

Jam*_*lis 7

对于全球operator newoperator delete,它实际上是既不超载也不是压倒一切的.允许程序用自己的定义替换默认的,实现提供的定义.C++标准说(§3.7.3/ 2):

该库提供全局分配和释放功能的默认定义.一些全局分配和释放功能是可替换的(18.4.1).C++程序最多只能提供一个可替换分配或释放功能的定义.任何此类函数定义都将替换库中提供的默认版本(17.4.3.4).

对于特定于类operator new或者operator delete,运算符会过载.