当前位置: 首页 > news >正文

【C++】static作用总结

文章目录

      • 1. 在函数内(局部静态变量)
      • 2. 在类中的静态成员变量
      • 3. 在类中的静态成员函数
      • 4. 在文件/模块中的静态变量或函数
      • 总结

1. 在函数内(局部静态变量)

static 用于函数内的局部变量时,该变量的生命周期变为整个程序的运行期间,而不是在每次进入和退出函数时创建和销毁。它的初始化仅在第一次调用函数时发生。

void func() {static int count = 0;  // 变量只初始化一次count++;std::cout << "Count: " << count << std::endl;
}

特点:

  • 变量在函数结束后不会被销毁,依然保持其值。
  • 只在函数第一次调用时初始化。
  • 作用域依然是函数内部,外部无法访问。

2. 在类中的静态成员变量

类的静态成员变量在整个类中是共享的,而不是每个对象都拥有一份。它属于类,而不是类的实例。

class MyClass {
public:static int count;  // 静态成员变量声明
};int MyClass::count = 0;  // 静态成员变量定义

特点:

  • 所有对象共享同一个静态成员变量。
  • 可以通过类名直接访问 MyClass::count,无需创建对象。
  • 生命周期贯穿程序整个执行期。

3. 在类中的静态成员函数

类的静态成员函数不能访问非静态的成员变量或成员函数,因为它们不属于任何对象。它们同样可以通过类名直接调用。

class MyClass {
public:static void print() {std::cout << "Static member function" << std::endl;}
};

特点:

  • 不依赖于具体对象,可以直接通过类名调用。
  • 不能访问类的非静态成员(除非通过对象或指针访问)。

4. 在文件/模块中的静态变量或函数

static 用于全局变量或函数时,它将限制该变量或函数的作用域仅在定义它的文件中。也就是说,其他文件不能直接访问它们。

static int counter = 0;  // 仅在该文件内可见

特点:

  • 用于控制文件级别的可见性,避免名称冲突。
  • 文件内的其他函数可以访问它,但外部文件无法访问。

总结

  • 局部静态变量:跨函数调用保持值,生命周期为整个程序运行期。
  • 类静态成员:类级别的共享成员,可以不通过实例访问。
  • 文件静态变量/函数:限制变量和函数的作用域到定义它的文件中,避免外部访问。
http://www.lryc.cn/news/431691.html

相关文章:

  • 视频提取字幕的软件有哪些?高效转录用这些
  • (4)SVG-path中的椭圆弧A(绝对)或a(相对)
  • docker国内镜像源报错解决方案
  • 《C++进阶之路:探寻预处理宏的替代方案》
  • 【综合案例】使用鸿蒙编写掘金评论列表案例
  • 【springboot】使用缓存
  • <Linux> 基础IO
  • OpenFeign的使用(一)
  • 【Python报错已解决】`AttributeError: move_to requires a WebElement`
  • 数据结构(邓俊辉)学习笔记】排序 2——快速排序:性能分析
  • 在postman中使用javascript脚本生成sign签名
  • 设计模式—2—单例模式
  • 服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例
  • 原码、反码、补码
  • 排序算法之计数排序详细解读(附带Java代码解读)
  • Linux:如何使用 Crontab
  • AI模型:追求全能还是专精?-- 之7 智能工厂程序设计
  • 如何在本地服务器部署SeaFile自托管文件共享服务结合内网穿透打造私有云盘?
  • 学习记录:js算法(二十五):合并两个有序链表
  • 43. 1 ~ n 整数中 1 出现的次数【难】
  • K8S - 理解volumeMounts 中的subpath
  • java工程师成功转型大数据
  • visual studio 2022更新以后,之前的有些工程编译出错,升级到Visual studio Enterprise 2022 Preview解决
  • Linux 性能调优技巧
  • 【网络安全】WordPress Uncontrolled Resource Consumption
  • gitee绑定公钥后依旧无法使用_gitee push添加公钥无效
  • Linux 删除 当前下的 mysql-8.0.31 空文件夹
  • 2024,中国服务器操作系统迎云智主升浪
  • STM32快速复习(九)RTC时钟模块
  • Nacos注册中心与OpenFeign远程调用