IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++知识点:static静态关键字 -> 正文阅读

[C++知识库]C++知识点:static静态关键字

近一年半工作上主要用TS进行开发,已经很久没使用C++了。最近开始学习UE4,也顺带着复习回顾C/C++吧。

对于全局变量:

????????从全局变量变成全局静态变量;

????????存储在静态存储区,在整个程序运行期间一直存在;

????????作用域:从定义之处开始,到文件结尾,除了声明它的文件,其他地方是不可见的;

? ? ? ? 初始化:未经初始化的全局静态变量会自动初始化为0;

对于局部变量:

? ? ? ? 从局部变量变成局部静态变量;

? ? ? ? 存储在静态存储区,在整个程序运行期间一直存在;

? ? ? ? 作用域:仍是局部作用域,在定义它的函数或语句块结束时,作用域结束。但是局部静态变量离开作用域后,并没有被销毁,仍然储存在内存中,只是不能访问它,只有该函数再次被调用,才能调用该局部静态变量,且值不变。(lua中的函数内包?)

? ? ? ? 初始化:未经初始化的局部静态变量会自动初始化为0;

对于函数:

? ? ? ? 函数被定义为静态函数;

? ? ? ? 作用域:静态函数只能在声明它的文件中可见,不能被其他文件访问;若函数的实现使用了static修饰,那么该函数只能在本文件中使用,不会与其他文件中的同名函数起冲突;

? ? ? ? 警告:不要在头文件中声明static的全局函数(外部不能访问),不要在cpp内声明非static的全局函数(容易引起冲突);若要在多个cpp中复用该函数,就把它的声明提取到头文件中,否则cpp内部要加上static关键字;

对于类的成员变量:

? ? ? ? 成员变量变为类的静态成员变量;

????????初始化:未经初始化的静态成员变量会自动初始化为0;

? ? ? ? 它是类的静态成员变量,不属于任何一个对象,是该类的所有对象共享的成员,可以实现多个对象之间数据共享,并且还不会破坏隐藏原则;对于所有对象类说,静态成员变量只存储在一处,供所有对象使用;

? ? ? ? 注意:静态成员变量不能在类中初始化,必须在类外进行初始化(变量的初始化可以想象为像系统申请内存的过程,对于这种共有数据,显然不能在任何函数或局部作用域中初始化)

对于类的成员函数:

? ? ? ? 成员函数变为静态成员函数

? ? ? ? 和变量一样,属于类的静态成员,而不是对象的成员,因此,对静态成员函数的引用可以不需要使用对象名:<类名>::<静态成员函数名>(<参数列表>) 或 <对象名>.<静态函数名>(<参数>)

? ? ? ? 静态成员函数的实现不能直接引用类的非静态成员,可以引用静态成员;若静态成员函数非要引用非静态成员,可通过对象来引用;

? ? ? ? 补充:普通的成员函数使用_thiscall调用约定(C++的调用约定),编译器在译时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址,它有this指针,可以访问类中任意成员;

????????????????而static修饰的静态成员方法使用_cdecl的调用约定(C的调用约定),编译器不会为它增加形参 this,它不需要当前对象的地址,所以不管有没有创建对象,都可以调用静态成员函数,同时因为它没有this指针,无法调动普通成员,只能访问静态成员。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:09:27  更:2021-11-22 12:10:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:29:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码