跳至主要內容

静态成员

AkashiNeko原创C++static

静态成员变量

在C语言中,用 static 修饰的全局变量,会被限制在当前文件。

C++允许使用 static 修饰类的成员和函数,被 static 修饰的成员变量和成员函数称为静态成员变量静态成员函数

静态成员变量在所有类的实例之间共享,它存储在全局区,不占用对象的内存空间。

class A {
public:
    static int a_;
private:
    int i_;
    static int b_;
};

int A::a_ = 10;
int A::b_ = 20;

值得注意的是,静态成员变量不能直接在类内赋予初始值,而是需要在类内声明,类外定义

静态成员函数

static 可以用于修饰成员函数。与普通成员函数不同的是,静态成员函数的参数表中没有 this 指针。由于成员函数访问成员变量时,需要通过 this 指针才能找到对象的内存,因此静态成员函数无法访问对象的非静态成员变量。

静态成员函数

静态成员函数是属于类而不是类的实例的函数。它们与任何特定的对象实例无关,而是与整个类相关联。

class A {
public:
    static void print() {
        // 静态成员函数可以访问静态成员变量
        cout << a_ << endl;

        // 静态成员函数无法访问普通成员变量
        // cout << i_ << endl; // 不能通过编译
    }
private:
    static int a_;
    int i_;
};
int A::a_ = 1;

int main() {
    A::print();
    return 0;
}

静态成员函数可以直接通过类名调用,而不需要通过对象实例。