C++静态成员变量,属于类本身

62 阅读1分钟

在C++中,static关键字可以用于声明类的静态成员变量,这意味着该变量不属于类的任何特定实例,而是属于类本身。静态成员变量在所有实例之间共享,并且只有一份副本。

以《降世神通》为背景,我们可以创建一个简单的例子,其中一个类代表一个御术学校,而静态成员变量可以用来跟踪学校的总学生数。这里是一个代码示例:


#include <iostream>
#include <string>

class BendingSchool {
public:
    static int total_students; // 静态成员变量,跟踪所有御术学校的学生总数
    std::string element; // 代表学校教授的元素类型

    // 构造函数
    BendingSchool(std::string elem) : element(elem) {
        // 每次创建新的BendingSchool实例时,学生总数增加
        total_students++;
    }
};

// 初始化静态成员变量
int BendingSchool::total_students = 0;

int main() {
    BendingSchool fireSchool("火烈");
    BendingSchool waterSchool("水善");
    BendingSchool earthSchool("土强");
    BendingSchool airSchool("气和");

    std::cout << "御术学院总学生数: " << BendingSchool::total_students << std::endl;

    return 0;
}


在这个例子中,无论我们创建多少个BendingSchool的实例,total_students都会正确地反映出所有学校的学生总数。这是因为total_students是一个静态成员变量,它独立于任何特定的BendingSchool实例。