在类定义内的函数包含static代表什么含义呢?
在类定义内使用 static
关键字修饰成员函数有特殊的含义,它表示这是一个静态成员函数。
静态成员函数的特点
1. 不依赖于类的实例
class MyClass {
public:static void staticFunc() { } // 静态函数void normalFunc() { } // 普通成员函数
};// 使用方式
MyClass::staticFunc(); // ✅ 直接通过类名调用,无需创建对象MyClass obj;
obj.normalFunc(); // ✅ 需要通过对象调用
MyClass::normalFunc(); // ❌ 错误!普通成员函数不能这样调用
2. 没有 this 指针
class Calculator {
public:static int add(int a, int b) {// 这里没有 this 指针,不能访问非静态成员return a + b;}int multiply(int a, int b) {return a * b;// 这里隐式有 this 指针}
};
3. 只能访问静态成员
class NetworkParser {
private:static int packetCount; // 静态成员变量int instanceData; // 普通成员变量public:static void parsePacket() {packetCount++; // ✅ 可以访问静态成员// instanceData = 10; // ❌ 错误!不能访问非静态成员}void normalMethod() {packetCount++; // ✅ 可以访问静态成员instanceData = 10; // ✅ 可以访问非静态成员}
};// 静态成员变量需要在类外定义
int NetworkParser::packetCount = 0;