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. 静态成员变量属于类,在全局数据区分配内存。