静态成员指的是在类声明成员时,前面加上static关键字,这样的成员就叫做静态成员(包括数据成员和成员函数)。当声明类的静态成员时,无论创建多少个类的成员函数,静态成员只有一个副本。静态成员的生命周期是从程序开始到程序结束,因此,静态成员的定义必须在类的外部,其形式为类名::(范围解析运算符)。静态成员的初始化可以在类内,也可以在类的外部,当不存在初始化语句的时候,在创建第一个类的对象的时候,静态成员被初始化为0。
下面的实例有助于更好的理解静态成员:
#include<iostream>
using namespace std;
class test {
public:
static int objectnum;
//定义默认构造函数
test() = default;
test(double a, double b, double c) {
height = a;
length = b;
deepth = c;
//每次创建对象时加一
objectnum++;
}
static int volume() {
return objectnum;
}
private:
double height;
double length;
double deepth;
};
//定义并初始化静态成员
int test::objectnum = 0;
int main() {
//可以在类的外部使用类名::来调用静态成员函数
cout << "total objects : " << test::volume() << endl;
test test1(1.2, 1.2, 1.2);
cout << "total objects : " << test::volume() << endl;
test test2(1.2, 1.2, 1.2);
cout << "total objects : " << test::volume() << endl;
return 0;
}
输出结果为:
total objects : 0
total objects : 1
total objects : 2