C ++中静态成员函数的用途?

如果每个成员函数仅包含一次(由所有实例共享),那么声明一个成员函数的目的究竟是静态的呢? 它是否像一个声明为const的函数,因为它修改了特定类型的数据(在这种情况下是静态数据成员)?


普通成员函数需要运行一个类实例。 可以直接调用静态方法,而无需先创建类的实例。

正常方法:

MyClass myClass;
myClass.NormalMethod();

静态方法:

MyClass::StaticMethod();

所以普通方法对于与类数据一起工作的函数来说是完美的。 如果一个方法不需要处理类数据,那么它将成为静态的候选对象。


类方法(静态或其他方法)可以访问该类的任何对象的私有成员,而不仅仅是它自己的实例。 静态方法也是如此,除非您将一个实例传递给它们,否则它们没有实例。

您也可以使用免费函数并将其声明为朋友,但免费函数意味着可以在不同类的对象上运行的更高级别的抽象。 一个静态类方法说:“我只有在我的课堂上才有意义”


静态方法的一个应用是创建实例和返回指针。 例如,可能有调用者不应该知道的派生类 - “工厂”函数知道使用哪个派生类。

当然,当你需要创建一个对象时,你可能还没有一个对象用于这个对象,即使你这样做了其他对象也是不相关的。

基本上,有时某些动作是类提供的抽象的一个方面,但该动作不与特定的对象相关联 - 或者至少不是已经存在的。 在这种情况下,您应该将该操作实施为静态功能。

同样,一些数据与类提供的抽象有关,但与该类的特定实例无关。 这些数据可能是最好的静态成员变量。

链接地址: http://www.djcxy.com/p/96355.html

上一篇: Purpose of a static member function in C++?

下一篇: Function Pointer to a non