一、静态成员变量
1.理论
- 定义:由关键字static修饰类体中成员,称为类静态成员(static class member)。
- 特点:静态成员变量是类的所有对象共享的变量。与普通成员变量相比,无论创建了多少个类的实例,静态成员变量只有一份拷贝。
- 初始化:静态成员变量需要在类外进行初始化,通常在类的实现文件中。
- 访问:静态成员变量可以通过类名直接访问,不需要创建类的对象。也可以通过类的对象访问。
- 用途:常用于存储类级别的信息(例如,计数类的实例数量)或全局数据需要被类的所有实例共享。
2.实战
#include <iostream>
using namespace std;
class Myclass{
public:
int datas;
static int staticValues;//定义一个静态成员变量
};
int Myclass::staticValues = 0;//初始化静态成员变量
int main()
{
cout << Myclass::staticValues << endl;//直接对成员变量访问
return 0;
}
二、静态成员函数
2.1理论
- 定义:静态成员函数是可以不依赖于类的实例而被调用的函数。它不能访问类的非静态成员变量和非静态成员函数。
- 访问:类似于静态成员变量,静态成员函数可以通过类名直接调用,也可以通过类的实例调用。
- 用途:常用于实现与具体对象无关的功能,或访问静态成员变量。
2.2实战
#include <iostream>
using namespace std;
class Test{
public:
void printInfor();
};
class Myclass{
public:
static int staticValues;//静态成员变量
static int getStaticValue(){//静态成员函数
return staticValues;
}
};
int Myclass::staticValues = 0;//静态成员变量初始化
void Test::printInfor()
{
Myclass::staticValues++;
cout << Myclass::getStaticValue() << endl;//其他类的成员函数访问静态成员函数
}
int main()
{
Test s1;
cout << Myclass::staticValues << endl;
cout << Myclass::getStaticValue() << endl;
s1.printInfor();
return 0;
}