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

C++: Difference Between Non-Member Function and Static Member Function?

本文关键字:函数 静态成员 区别 C++ 成员      更新时间:2023-10-16

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

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

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

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

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

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

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