c++ 静态成员变量
Student.h头文件内容:
#pragma once
#include <string>
using namespace std;class Student
{
public:string name;int score;static int totalScore; // 静态局部变量声明Student(string name, int score);~Student();void print() const;
};
Student.cpp源文件内容:
#include "Student.h"
#include <iostream>Student::Student(string name, int score) : name(name), score(score) {Student::totalScore += score;
}int Student::totalScore = 0; // 静态成员变量定义和初始化, 必须Student::~Student() {cout << "student: " << name << " 析构" << endl;
}void Student::print() const {cout << "student: " << name << ", my score:" << score << " , all students' total score: " << Student::totalScore << endl;
}
测试代码:
#include "Student.h"void testStaticVal() {Student* stu1 = new Student("隔壁老王", 60);stu1->print();Student* stu2 = new Student("隔壁老宋", 80);stu2->print();delete stu1;delete stu2;std::cout << "totalScore: " << Student::totalScore << std::endl;
}
打印:
ok. 静态成员变量属于类,在全局数据区分配内存。