C ++:非成员函数和静态成员函数的区别?

时间:2014-04-22 21:28:27

标签: c++ static-members non-member-functions

简单的问题,这里:静态成员函数之间的区别是什么,即可以在不需要对象访问它的情况下调用的函数(简单地使用类标识符)和非成员函数?在这里,我在概念上和功能上都要求。

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

3 个答案:

答案 0 :(得分:6)

静态成员函数可以访问类的私有和受保护部分。非成员函数不能默认执行此操作。只有当一个阶级给予他们友谊时,他们才能做到这一点。

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

答案 1 :(得分:1)

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

静态函数本身也可以受到保护和私有。因此,它们在声明它们的类或其派生类之外是不可能的。

答案 2 :(得分:0)

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