为什么 new 和 delete 运算符签名与所有其他运算符不同

D M*_*D M 0 c++ operator-overloading new-operator

new 运算符的签名是:

void* operator new(size_t count)
Run Code Online (Sandbox Code Playgroud)

“operator”和“new”之间有一个空格。这是:

  1. 与所有其他运算符签名不同(除了 new、delete 及其对应的数组)。例如:

    T& operator=(const T& other)

  2. 不符合 C++ 不允许空格的函数名规则。

在这种情况下,我假设“operator”是一个关键字......但如果这是正确的,为什么在所有其他运算符函数签名中不是这种情况?

是否有不一致的解释?

Nat*_*ica 5

void* operatornew(size_t count)是一个名为的函数operatornew,它接受 asize_t并返回 a void*

operator=和大多数其他运算符不需要空格的原因是这些符号在名称中无效,因此operator=不需要空格。

  • @DM 是的。名称只能是带有 `operator=` 的一件事。`operatornew` 可能是一个错误或你真正想要的。 (2认同)