C++ static关键字

在C++中,static关键字有多种用途,主要用于控制变量和函数的存储期和链接性。下面详细介绍static关键字在不同上下文中的用法,并提供相应的代码示例。

1. 静态局部变量

静态局部变量在函数中定义,但它们的生命周期贯穿程序的整个运行周期,而不仅仅是函数的执行周期。静态局部变量在第一次调用函数时初始化,并且保持其值直到程序结束。

#include <iostream>

void staticLocalExample() {
    static int count = 0; // 静态局部变量
    count++;
    std::cout << "Count: " << count << std::endl;
}

int main() {
    staticLocalExample();
    staticLocalExample();
    staticLocalExample();
    return 0;
}

输出:

Count: 1
Count: 2
Count: 3

2. 静态类成员变量和成员函数

静态成员变量和成员函数属于类而不是类的对象。静态成员变量在所有对象之间共享,而静态成员函数只能访问静态成员变量。

#include <iostream>

class MyClass {
public:
    static int staticVar; // 静态成员变量

    static void staticFunc() { // 静态成员函数
        std::cout << "Static Variable: " << staticVar << std::endl;
    }
};

// 静态成员变量的定义和初始化
int MyClass::staticVar = 0;

int main() {
    MyClass::staticVar = 10; // 通过类名访问静态成员变量
    MyClass::staticFunc();   // 通过类名调用静态成员函数

    MyClass obj1, obj2;
    obj1.staticVar = 20; // 通过对象访问静态成员变量
    MyClass::staticFunc();

    return 0;
}

输出:

Static Variable: 10
Static Variable: 20

3.静态全局变量和函数

静态全局变量和函数的作用域限制在定义它们的文件中。这种用法通常用于实现文件内的封装,避免命名冲突。

#include <iostream>

// 静态全局变量
static int globalVar = 100;

// 静态函数
static void staticFunction() {
    std::cout << "Static Function: " << globalVar << std::endl;
}

int main() {
    staticFunction();
    return 0;
}

输出:

Static Function: 100

4.静态成员变量在类中的初始化

静态成员变量必须在类定义外进行初始化。

#include <iostream>

class Example {
public:
    static int staticVar;

    Example() {
        staticVar++;
    }

    static void showStaticVar() {
        std::cout << "Static Variable: " << staticVar << std::endl;
    }
};

// 静态成员变量的定义和初始化
int Example::staticVar = 0;

int main() {
    Example obj1;
    Example obj2;
    Example::showStaticVar();  // 输出:Static Variable: 2

    return 0;
}

总结

  • 静态局部变量:在函数中定义,但其生命周期贯穿程序的整个运行周期。
  • 静态类成员变量和成员函数:属于类而不是类的对象,所有对象共享静态成员变量。
  • 静态全局变量和函数:作用域限制在定义它们的文件中。
  • 静态成员变量初始化:必须在类定义外进行初始化。
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值