C++:非成员函数和静态成员函数之间的区别? [重复]

问题描述 投票:0回答:3
简单的问题:静态成员函数(即不需要对象访问它(只需使用类标识符)即可调用的函数)和非成员函数有什么区别?在这里,我从概念上和功能上问。

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

c++ static-members non-member-functions
3个回答
8
投票
静态成员函数可以访问类的私有部分和受保护部分。默认情况下,非成员函数无法执行此操作。只有班级给予他们友谊,他们才能做到这一点。

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


1
投票
我想附加

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

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


0
投票
静态成员函数的另一个优点是,如果你想在 Windows API 的线程中调用它,这是唯一的方法。 CreateThread 要求函数位于全局空间中,或者如果它是成员函数,则它必须是静态的。至少据我所知,没有办法解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.