1,静态成员的定义
静态成员在C++类中是一个重要的概念,它包括静态成员变量和静态成员函数。静态成员的特点和存在的意义如下:
静态成员变量
1. 定义:静态成员变量是类的所有对象共享的变量。与普通成员变量相比,无论创建了多少个类的实例,静态成员变量只有一份拷贝。
2. 初始化:静态成员变量需要在类外进行初始化,通常在类的实现文件中。
3. 访问:静态成员变量可以通过类名直接访问,不需要创建类的对象。也可以通过类的对象访问。
4. 用途:常用于存储类级别的信息(例如,计数类的实例数量)或全局数据需要被类的所有实例共
享。
静态成员函数
1. 定义:静态成员函数是可以不依赖于类的实例而被调用的函数。它不能访问类的非静态成员变量和非静态成员函数。
2. 访问:类似于静态成员变量,静态成员函数可以通过类名直接调用,也可以通过类的实例调用。
3. 用途:常用于实现与具体对象无关的功能,或访问静态成员变量。
示例代码:
#include <iostream>
using namespace std;
class Test{
public:
void printInfo();
};
class Myclass{
public:
int datas;
static int staticValue; //定义方式
void printInfo(){
cout << datas << endl;
};
static int getStaticValue(){
return staticValue;
}
};
void Test::printInfo(){
cout << "test对象内打印"<<endl;
Myclass::staticValue++;
cout << Myclass::getStaticValue() << endl;
}
int Myclass::staticValue = 0; //初始化方式
int main()
{
cout << Myclass::staticValue << endl; //使用方式
cout << Myclass::getStaticValue() << endl; //使用方式
Test t;
t.printInfo();
return 0;
}
2,静态成员变量的作用
静态成员变量在C++中的一个典型应用是用于跟踪类的实例数量。这个案例体现了静态成员变量的特性:
它们在类的所有实例之间共享,因此适合于存储所有实例共有的信息。
下面是一个示例,展示了如何使用静态成员变量来计数一个类的实例数量:
#include <iostream>
using namespace std;
class Test{
public:
void printInfo();
};
class Myclass{
public:
static int staticNum; //定义方式
Myclass(){
staticNum++;
};
static int getStaticNum(){
return staticNum;
}
};
int Myclass::staticNum = 0; //初始化方式
int main()
{
Myclass m1;
Myclass m2;
cout << "当前类实例对象数量:" <<Myclass::staticNum << endl; //直接访问
Myclass m3;
cout << "当前类实例对象数量:" << m3.getStaticNum() << endl; //通过实例访问
Myclass m4;
cout << "当前类实例对象数量:" << Myclass::getStaticNum() << endl; //通过函数间接访问
return 0;
}