2010-12-09 53 views
0

可能重复:
Why are some operators in C++ only allowed to be overloaded as member functions?为什么operator()[] - > =必须是非静态成员?

为什么运算符()[] - > =必须为非静态成员?为什么它不能成为朋友?

+0

是否有任何可以成为静态成员的运算符? – 2010-12-09 06:44:16

+0

@jleedev:是的,+, - ,/,* ...你明白了。 – 2010-12-09 06:45:53

+0

@jleedev:通常使插入和抽取操作符不是它们定义的类中的成员,更不用说是静态成员。其他操作员可以做同样的事情。 – cHao 2010-12-09 06:51:07

回答

2

因为你必须在一个类的实例上调用它。以例如 - >运算符为例。你会如何建议获得一个指向类本身的指针?这没有多大意义。

1

因为它必须是非静态的。简单的设计决策。可能是因为C++没有类对象的概念。

相关问题