c++ 类全局变量_static在C和C++中的用法总结
C中 static 的用法
C语言中,根据 static 的使用位置可以分为两种:
1、修饰函数内部的变量
即函数内的静态变量,这样定义的变量也称为局部静态变量。
它的值不会因为函数调用的结束而被清除,当函数再次被调用时,它的值是上一次调用结束后的值。
如下图所示,变量 x 每次都会从新初始化,而静态变量 y 的值则不会。
2、修饰文件级别的变量或函数
表示该变量和函数只在本文件可见,其他文件看不到、也访问不到该变量和函数。
这样的变量通常称为静态全局变量,这样的函数称之为静态函数。
C++中 static 的用法
由于C++引入了类,在保持与C语言兼容的同时,static 关键字又有了两种新用法。
3、修饰类的数据成员
即所谓的“静态成员”。这种数据成员的生成周期大于类的对象(实例),静态数据成员是每个类有一份,而普通数据成员是每个对象有一份。
静态成员变量属于整个类所有,只能在类的内部声明,在类的外部(全局区)定义和初始化,静态数据成员初始化的格式:
:: =
4、修饰类的成员函数
即所谓的“静态成员函数”。这种成员函数只能访问静态成员和其他静态成员函数,不能访问非静态成员和非静态成员函数。
因为类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。
c++ 类全局变量_static在C和C++中的用法总结相关推荐
- android r类 作用,Android 主项目和 Module 中 R 类的区别
Android 主项目和 Module 中 R 类的区别 我们知道 Android 项目中会通过自动生成一个 R.java 类的方式来保存项目中所有资源文件的标识在主项目中生成的 R.java 中的资 ...
- java在容器中导入图片_Java程序员必学技术:@Import直接导入类,在容器@Configuration、@Component中是怎么直接导入类注册到容器的?...
Java程序员必学技术:@Import直接导入类,在容器@Configuration.@Component中是怎么直接导入类注册到容器的? Spring IoC 容器是一个管理 Bean 的容器,在 ...
- c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...
- openopc.opcerror: dispatch: 无效的类字符串_实战PyQt5: 064-MV框架中的Model类
模型(Model)简介 在Model-View框架中,模型(Model)为视图(View)和委托(Delegate)使用数据提供了标准接口.大多数情况下模型中并不真正存储数据(如果只有少量的数据,可以 ...
- 随机创建圆形、三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长
随机创建圆形.三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长 题目要求 解题思路 代码 形状类代码 圆形类代码 三角形类代码 矩形类代码 方法类代码 运行结果 题目要求 随机创建 ...
- C++核心准则NR.4:不要坚持将每个类声明放在其自己的源文件中
NR.4: Don't insist on placing each class declaration in its own source file NR.4:不要坚持将每个类声明放在其自己的源文件 ...
- CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/
文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...
- 习题 8.5 将本章的例8.4改写为一个多文件的程序:1.将类定义放在头文件arraymax.h中;2.将成员函数定义放在源文件arraymax.cpp中;3.主函数放在源文件file1.cpp中。
C++程序设计(第三版) 谭浩强 习题8.5 个人设计 习题 8.5 将本章的例8.4改写为一个多文件的程序: 1.将类定义放在头文件arraymax.h中: 2.将成员函数定义放在源文件arraym ...
- 练习:创建 一个新类 Gerbil,包括 int getbilNumber,在构造器中初始化它。
package com.list.arraylist;import java.util.ArrayList;/***创建 一个新类 Gerbil,包括 int getbilNumber,在构造器中初始 ...
- C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)
C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...
最新文章
- sql server 2008连接oracle操作步骤详细记录,SQLServer连接Oracle详细步骤
- redhat7配置本地yum、163 yum、epel 源
- Python工具 | 4个好用的开源 Python 下载器
- ADC和DAC中多通道的含义
- VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解
- GDI+用PNG图片做半透明异型窗口
- lnmp下mysql创建新用户授权后登录报错 1045 Access denied for user 'name'@'localhost
- MapReduce案例(数据中获取最大值TopN)
- Linux下创建和删除软、硬链接(ln)
- html 转换 pdf 工具
- 计算机专业专转本题目(新考纲)
- JavaScript设计模式:四、发布订阅模式
- Jitsi Meet的prosody模块报错Client disconnected: ssl handshake failed
- unity 获取设备的GPS信息
- 2022金属非金属矿山(露天矿山)安全管理人员考试练习题模拟考试平台操作
- 免费可用的Android手机传感器数据采集程序(附程序)
- CentOS 可以ping通IP和域名,但打开火狐却上不了网
- java.lang.NoSuchFieldError: count at org.eclipse.jface.viewers.ColumnViewer$1.mouseDown
- 自从掌握了Google和百度的 16 个高级搜索技巧,我再也没有解决不了的 bug 了
- 液晶显示器原理和应用
热门文章
- 导出excel乱码问题
- 【原译】一个可定制的WPF任务对话框
- 非关系数据库-NoSQL探讨
- 前端项目架构模板-(三)交互式打包及自动化部署前端项目
- linux服创建目录,Linux目录的创建与删除命令
- oracle9i阻塞,Oracle 9i 整体性能优化概述(zt)
- java压测请求线程数_jmeter压力测试 设置一秒发送一次请求,一秒两次请求
- 监听程序不支持服务 linux,ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序...
- matlab出图时汉字都变成方框_Autodesk软件界面中文字都变成符号“方框”,怎么办呢?...
- python的flask实现接口_python+flask:实现POST接口功能