📜  C ++ |静态关键字|问题6(1)

📅  最后修改于: 2023-12-03 14:39:38.946000             🧑  作者: Mango

C++ 静态关键字问题6

简介

在C++中,静态关键字有许多用法,其中一种常见的用法是定义静态成员变量。本文将介绍静态成员变量及其使用场景。

静态成员变量

在C++中,静态成员变量是属于类的,而不是属于类的任何一个实例。因此,无论创建多少个类实例,其静态成员变量只有一个副本。静态成员变量的用法如下:

class MyClass {
public:
    static int myStaticVar;
};

在上述代码中,myStaticVar是静态变量,可以在全局范围内进行定义和初始化,如下所示:

int MyClass::myStaticVar = 0;

需要注意的是,静态成员变量必须在类定义的外部进行初始化。在类定义内部初始化静态成员变量是不合法的。

静态成员变量可以像普通成员变量一样进行访问,但是需要使用作用域解析运算符::,如下所示:

int main() {
    MyClass::myStaticVar = 1;
    return 0;
}
静态成员变量的使用场景

静态成员变量的使用场景有很多,例如:

  • 统计类实例数量
  • 实现单例模式
  • 实现全局变量

下面以统计类实例数量为例进行介绍。

统计类实例数量的代码如下所示:

class MyClass {
public:
    MyClass() {
        ++count;
    }
    static int getCount() {
        return count;
    }
private:
    static int count;
};

int MyClass::count = 0;

int main() {
    MyClass obj1;
    MyClass obj2;
    MyClass obj3;
    std::cout << MyClass::getCount() << std::endl;
    return 0;
}

在上述代码中,当创建MyClass实例时,构造函数会自动调用,将count变量的值加1。通过静态成员函数getCount()可以获取当前类实例的数量。

总结

本文介绍了C++中静态关键字的用法,重点介绍了静态成员变量及其使用场景。静态成员变量是一个有用的工具,可以帮助我们更好地组织和实现C++代码。