首页 > 解决方案 > 为什么新操作员和删除操作员签名与所有其他操作员不同

问题描述

新运算符的签名是:

void* operator new(size_t count)

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

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

    T& operator=(const T& other)

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

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

有不一致的解释吗?

标签: c++operator-overloadingnew-operator

解决方案


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

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


推荐阅读