一个简单的问题,这里:静态成员函数(即无需对象访问即可调用的函数(仅使用类标识符))与非成员函数有什么区别?在这里,我在概念上和功能上都在问。
非成员函数在概念上是静态的吗?
一个简单的问题,这里:静态成员函数(即无需对象访问即可调用的函数(仅使用类标识符))与非成员函数有什么区别?在这里,我在概念上和功能上都在问。
非成员函数在概念上是静态的吗?
静态成员函数可以访问类的私有和受保护部分。默认情况下,非成员函数不能这样做。只有在班级给予他们友谊的情况下,他们才能做到这一点。
要考虑的另一点是静态成员函数的名称在类的范围内。多个类可以拥有同名的静态成员函数,而不必担心名称冲突。
我想附加@R Sahu的答案,即重载运算符可能不是类的静态函数。:)
静态函数本身也可以被保护和私有。因此,在声明它们的类或其派生类之外,它们可能无法访问。
静态成员函数的另一个优点是,如果您想在 Windows API 的线程中调用它,它是唯一的方法。CreateThread 要求函数要么位于全局空间中,要么如果它是成员函数,则它必须是静态的。至少据我所知,没有办法绕过它。