静态成员在 C++ 类中是一个重要的概念,它包括静态成员变量和静态成员函数。
一、静态成员变量
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;
}
存在的意义
- 共享数据:允许对象之间共享数据,而不需要每个对象都有一份拷贝。
- 节省内存:对于频繁使用的类,使用静态成员可以节省内存。
- 独立于对象的功能:静态成员函数提供了一种在不创建对象的情况下执行操作的方法,这对于实现工具函数或管理类级别状态很有用。