6

一个简单的问题,这里:静态成员函数(即无需对象访问即可调用的函数(仅使用类标识符))与非成员函数有什么区别?在这里,我在概念上和功能上都在问。

非成员函数在概念上是静态的吗?

4

3 回答 3

7

静态成员函数可以访问类的私有和受保护部分。默认情况下,非成员函数不能这样做。只有在班级给予他们友谊的情况下,他们才能做到这一点。

要考虑的另一点是静态成员函数的名称在类的范围内。多个类可以拥有同名的静态成员函数,而不必担心名称冲突。

于 2014-04-22T21:32:08.227 回答
1

我想附加@R Sahu的答案,即重载运算符可能不是类的静态函数。:)

静态函数本身也可以被保护和私有。因此,在声明它们的类或其派生类之外,它们可能无法访问。

于 2014-04-22T21:47:02.500 回答
0

静态成员函数的另一个优点是,如果您想在 Windows API 的线程中调用它,它是唯一的方法。CreateThread 要求函数要么位于全局空间中,要么如果它是成员函数,则它必须是静态的。至少据我所知,没有办法绕过它。

于 2014-04-22T22:25:27.080 回答