关键字Static的作用
来源:互联网 发布:马塔潘角海战知乎 编辑:程序博客网 时间:2024/06/05 11:18
1、修饰变量
局部静态变量和全局静态变量,都存在内存的静态区
局部静态变量,在函数体内定义,只能在函数内部使用,同一个文件中的其他函数不能用。即使函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时仍能用到这个值。
全局静态变量,在函数外部定义,作用域:从定义处开始,到所在文件结尾处结束,其他文件即使用extern声明也无法使用。
#include "stdafx.h"#include "iostream"using namespace std;static int j;void fun1(void);void fun2(void);void main(void){int k = 0;for (k = 0; k < 10; k++){fun1();fun2();}}void fun1(void){static int i = 0;i++;cout <<"fun1 " << i << endl;}void fun2(void){j = 0;j++;cout <<"fun2 " << j << endl;}静态全局变量在定义时需要赋初值。
静态局部变量定义时赋初值后,再次调用所在函数,不会运行定义语句。
运行结果如下:
2、修饰函数
函数前加static使函数成为静态函数,静态函数的作用域仅局限于本文件,所以静态函数又称为内部函数。好处是:不同的人编写不同的函数时,不用担心自己所定义的函数是否会与其他文件中的函数同名。
3、C++类的静态成员
一般情况下,类的数据成员在每个对象中都有一个备份,因此,不同对象可以有不同的属性值,称为实例属性;有些情况下,某个数据成员的值对每个对象都是相同的,它对所有对象只有唯一的一个备份,称为类属性。通过静态成员实现类属性。
只需在声明该静态数据成员时以static开头。
公有静态数据成员可以像一般数据成员那样,直接通过对象或在成员函数中访问,也可以通过类名加作用域限定符来访问。
私有和保护静态数据成员,只能在成员函数中访问。
静态数据成员不属于哪一个对象,因此不能在构造函数或其他成员函数中进行初始化,初始化必须在类体外进行。
如:int Person :: m_nCount = 0 ;
有时需要在声明对象之前访问私有静态数据成员,必须定义一个访问静态数据成员的静态成员函数。
定义静态成员函数必须以static开头。静态成员函数与一个类相关联。
静态成员函数可以通过对象、其他成员函数和类名加运算符::调用。
静态成员函数只能访问类的静态成员(成员变量和成员函数),或者将对象作为静态成员函数的参数,然后通过对象访问非静态成员。
静态成员函数没有this指针,因为静态成员函数属于整个类,只有一个运行实例,不需要通过对象,通过类就可以调用。
- 关键字static的作用
- 关键字static的作用
- static关键字的作用
- static关键字的作用
- static关键字的作用
- Static关键字的作用
- 关键字static的作用
- 关键字static的作用
- static关键字的作用
- static关键字的作用
- static关键字的作用
- 关键字static的作用
- static关键字的作用
- static关键字的作用
- static关键字的作用
- static关键字的作用
- static关键字的作用
- 关键字static的作用
- 手机视频对讲开发技术
- 英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析
- CSharp、.NetQQ交流群
- Cocos2d-x描边字的实现
- iOS 滤镜 和 iOS6 中的Core Image技术
- 关键字Static的作用
- DatePicker,TimePicker设置滑动最大以及最小时间
- 数据结构6-关于“树”的生成与操作的实例
- 数据同步之各站点同步表触发器创建
- jQuery:提交表单前判断表单是否被修改过
- php-5.5.17 centos7
- LeetCode 方法详解
- IOS7 cell.selectionStyle = UITableViewCellSelectionStyleBlue 不起作用怎么办,选中后背景是浅灰色的。
- extern和static修饰全局变量的区别