为什么new和delete运算符签名与所有其他运算符不同
new 运算符的签名是:
void* operator new(size_t count)
“operator”和“new”之间有一个空格。这是:
-
与所有其他运算符签名不同(除了 new、delete 及其对应的数组)。例如:
T& operator=(const T& other) -
不符合 C++ 不允许空格的函数名规则。
在这种情况下,我假设“operator”是一个关键字......但如果这是正确的,为什么在所有其他运算符函数签名中不是这种情况?
是否有不一致的解释?
回答
void* operatornew(size_t count)是一个名为的函数operatornew,它接受 asize_t并返回 a void*。
operator=和大多数其他运算符不需要空格的原因是这些符号在名称中无效,因此operator=不需要空格。
- @DM 是的。名称只能是带有 `operator=` 的一件事。`operatornew` 可能是一个错误或你真正想要的。