C++中static用法总结
来源:互联网 发布:美国本科预科 知乎 编辑:程序博客网 时间:2024/06/06 02:38
C++中可以用static修饰变量和函数
一、用static修饰变量
1、类外静态变量
方法: static int staticA = 0; 用途: 可以写在.h文件,也可以写在.cpp文件,该语句既是声明也是定义,该变量的作用域都仅限于cpp文件。 可以在多个cpp文件里定义相同的变量名;也可以在一个h文件里定义,在多个cpp文件里包含这个h文件。
2、类内静态变量
方法: 在.h文件里声明 class ClassA { public: static int a; }; 在cpp文件里定义 int ClassA::a = 1; //不需要static关键词 用途: .h文件里声明变量,但不能初始化变量,必须在某个cpp文件里定义该静态变量(定义的时候可以初始化变量),否则会在链接时报错。 能访问ClassA的地方都都可以通过ClassA::a来访问该变量。
3、函数内的静态变量
方法1: void func1(int b) { static int a = b; } 方法2: class ClassA { public: void func1(int b) { static int a = b; } }; 用途: 只在第一次调用func1函数的时候初始化变量的值,之后会跳过定义的表达式(包括定义时 的赋值操作)。
二、用static修饰函数
1、类外静态函数
方法: static int func1(int a) { return a+1; } 用途: 可以写.h文件,也可以写在.cpp文件,该语句既是声明也是定义,不能分开写。 (每个cpp里的函数都是独立的拷贝);也可以在一个h文件里定义,在多个cpp文件里包含这个h文件。
2、类内静态函数
方法: 在.h文件里声明 class ClassA { public: static int func1(int a); }; 在cpp文件里定义 int ClassA::func1(int a)//不需要static关键词 { return a+1; } 用途: 可以在声明的时候定义,在可以在cpp文件里定义。 全局只有一份,能访问ClassA的地方都可以通过ClassA::func1来访问该函数。
三、总结
1、类外的静态变量和静态函数的作用域是文件,而类外的变量和函数的作用域才是全局的,不要混淆; 声明即定义,不需要在cpp文件里再定义一次。 2、函数内的静态变量只声明、定义、初始化一次。 3、类内的静态变量和静态函数的作用域是全局的; 声明和定义可以分开,声明定义在h文件,定义放在cpp文件; 类内的静态变量不能在.h文件里初始化,需要在cpp文件里初始化; 在cpp文件里定义静态变量和静态函数时不需要也不能加上static关键词。
0 0
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static用法总结
- C语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c语言中static 用法总结
- c/c++中static 用法总结
- Redis的基本操作
- ubuntu设置root密码及 Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次
- 【CC2541】CC2541之HAL层KEY分析
- 【整理】Android-Recovery Mode(recover模式详解)
- Javaweb
- C++中static用法总结
- 最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265))
- opencv2,找轮廓,用周长筛选
- 2016年的年终总结吧
- SQL查询、排序(mysql下)
- P2P打洞原理
- servlet处理http响应
- Sqlite数据库
- 单链表操作