简单的问题:静态成员函数和非成员函数之间有什么区别?静态成员函数可以不需要对象就能调用(只需使用类标识符),而非成员函数呢?在这里,我既想概念上理解又想了解其功能性。非成员函数从概念上来说并不是静态的。
静态成员函数可以访问类的私有和保护部分。非成员函数作为默认情况下无法访问,只有在类授予友元关系时才能访问。 另一个需要考虑的是,静态成员函数的名称处于类的范围内。多个类可以有相同名称的静态成员函数而不必担心名称冲突。
静态成员函数的另一个优点是,它是在Windows API线程中调用函数的唯一方式。CreateThread要求函数必须在全局空间中,或者如果它是成员函数,则必须是静态的。至少在我所知道的范围内,没有其他方法可以绕过这个限制。
this
,它是指向具有实例特定变量的类实例的指针。静态函数没有this
参数(因此您不能在静态函数中使用this
,只能访问静态数据成员。”)。 - 101010