静态成员函数

静态成员函数被视为具有类范围。 与非静态成员函数不同,这些函数没有隐式 this 参数;因此,它们只可直接使用静态数据成员、枚举器或嵌套类型。 无需使用相应类类型的对象,即可访问静态成员函数。 请看以下示例:

示例

// static_member_functions.cpp
#include <stdio.h>

class StaticTest
{
private:
    static int x;
public:
    static int count()
    {
        return x;
    }
};

int StaticTest::x = 9;

int main()
{
    printf_s("%d\n", StaticTest::count());  // 9
}

注释

在前面的代码中,类 StaticTest 包含静态成员函数 count。 此函数返回私有类成员的值,但不一定与 StaticTest 类型的给定对象相关联。

静态成员函数具有外部链接。 这些函数没有 this 指针。 因此,以下限制适用于此类函数:

  • 它们无法使用成员选择运算符(.–>)访问非静态类成员数据。

  • 它们不能声明为 virtual

  • 它们不能与具有相同参数类型的非静态函数同名。

    备注

    不计算选择静态成员函数的成员选择运算符(.–>)的左侧内容。如果该函数用于其副作用,这会很重要。例如,表达式 SideEffects().CountOf() 不调用函数 SideEffects。

请参见

参考

this 指针