【发布时间】:2019-06-08 23:09:59
【问题描述】:
在 C++ 中,当 LHS 是被声明的类时,二元运算符可以被一个或两个运算符覆盖。如果用两个参数声明 in 必须是非成员函数。可见在这段代码中,两个声明是相同的。
class MyClass
{
public:
MyClass operator+(const MyClass&);
}
MyClass operator+(const MyClass&, const MyClass&);
是否有原因后者不能作为静态成员函数完成?像这样
class MyClass
{
public:
static MyClass operator+(const MyClass&, const MyClass&);
}
这将使编写流输入/输出运算符更容易(我知道您可以使用friend 来声明运算符)
【问题讨论】:
-
我假设您想要另一个答案,而不是“C++ 标准不允许它”?
-
@Someprogrammerdude 我想要的答案更像是“为什么 C++ 标准不允许这样做?”
-
(相对)容易告诉您标准中禁止这种用法的部分。要告诉您为什么不允许这样做的原因,必须查看标准委员会会议协议,或直接询问委员会。除了猜测推理之外,我们很少有人能做任何事情。
-
输入“friend”六个字的方便程度不亚于输入“static”六个字。它们也更容易避免。