方法: 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来访问该函数。