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

C/C++程序设计——static关键字

一、修饰局部变量

(1)称为静态局部变量,改变局部变量的生命周期,生命周期由局部变为全局。

(2)作用域不发生改变。

(3)静态局部变量只能被初始化一次。

本质:

        改变了局部变量的存储位置:局部变量是存储在栈区,但如果用static修饰局部变量,则编译器在编译期间就会将其分配到全局数据区。

二、修饰全局变量或函数

作用:

        都是限制其只能在本文件内使用,不能跨文件访问(默认可以跨文件访问)。

本质:

        全局变量和函数有外部链接属性,使用static修饰时,就会改变其链接属性为内部链接属性,让其具有文件作用域,即只能在本文件内使用,不能跨文件访问。

例如:

       ① 在dome2中定义的函数和全局变量,在头文件中声明后,就可以在另一个包含该头文件的文件中,进行跨文件访问:

 

 

         ②在dome2中用static修饰,禁止跨文件访问,则dome中就无法再访问:

注意:

        变量声明要加extern关键字,明确告知编译器这是声明,否则可能会被误认为是定义。函数声明也建议加上此关键字。

三、static成员(C++)

1.概念

        声明为static的类成员称之为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。

        静态的成员变量一定要在类外进行初始化(注:在类外定义时不要加static,但要加上类名::)

2.特性

1.静态成员为所有类对象所共享,不属于某个具体的实例;

2.静态成员变量必须在类外定义,定义时不添加static关键字;

3.类静态成员即可用类名::静态成员或者对象.静态成员来访问;

4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员,也不能调用非静态成员函数;

5.静态成员和类的普通成员一样,也有public、protected,private3种访问级别,也可以具有返回值;

6.静态成员变量没有存储在对象中;

7.静态成员函数不能设置为const成员函数(因为这里const本质是在修饰this);

8.静态成员函数不能设置为虚函数。

3.访问方式

(1)对象名.静态成员

(2)类名::静态成员


http://www.kler.cn/news/11933.html

相关文章:

  • NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
  • 「数字信号处理」MATLAB设计 双音多频拨号系统
  • ESP32设备驱动-MAX30102脉搏血氧饱和度和心率监测传感器驱动
  • 【GB28181】PJSIP库(七)C++接口PJSUA2类详解:Call、Buddy
  • 发令枪音效芯片,语音提示ic
  • WMS智能仓储
  • winForm目录文件介绍
  • 测试5年,从纯手工测试到测试开发,我是怎么拿到腾讯25koffer的?
  • 红黑树和平衡二叉树的优缺点及应用场景
  • ChatGPT或要推出APP,OpenAI官宣为ChatGPT招募移动端开发工程师
  • [架构之路-162]-《软考-系统分析师》-3-作系统基本原理-进程管理
  • 1.分布式电源接入对配电网影响分析
  • 追梦之旅【数据结构篇】——详解小白如何使用C语言实现堆数据结构
  • [架构之路-160]-《软考-系统分析师》-10-系统分析-7-数据与数据流程分析、需求规格说明书
  • GPT-4工具是软件工程师工作效率的倍增器
  • 前端解析Excel中的数据进行操作
  • 线性代数——矩阵
  • CTR-GCN 论文解读
  • 游戏运营专员的职责有哪些?提高游戏收入的关键是什么?
  • C语言实现惯导更新算法(机械编排)
  • DPDK入门(环境搭建以及小demo)
  • 2022国赛30:windows脚本题解析
  • python入门:cl.exe‘ failed with exit status 2错误通用解决方案
  • 【负荷预测】基于VMD-SSA-LSTM光伏功率预测【可以换数据变为其他负荷等预测】(Matlab代码实现)
  • 优橙内推河南专场——5G网络优化(中高级)工程师
  • mycat读写分离
  • C结构体中末尾的data[0]
  • Java-类的知识进阶
  • yocto 任务
  • 如何构建敏捷项目管理团队?