C++中的static关键字主要用于两个地方:
- 面向过程程序设计的static:用于普通变量和函数,被static修饰的变量和函数不能其他文件访问
- 面向对象程序设计的static:修饰类的成员变量和方法
1、面向过程的static
1)静态变量
.静态全局变量:定义在所有函数外部,由本文件内的其他代码共享
.静态局部变量:定义在局部函数内,每次函数调用都是基于上一次调用之后的值
2)静态函数
为了实现对其他文件不可见,静态函数的声明和定义要分开,如果静态函数声明和定义都在头文件中,通过#include指令包含一下该静态函数就可以在其他文件可见了(C++中的include是静态包含,自动将include指向的文件内容替换到当前位置)
2、面向对象的static
1)静态成员变量
声明在类内,赋值在类外,可通过类名直接调用
//A.h
class A{
public:
static int x;
};
//A.cpp
int A::x=3;//此时不要再有static关键字
//main.cpp
cout<<A::x<<endl;//如果没有初始化(赋值)不能调用
2)静态成员方法
静态成员方法属于类不属于对象,方法内部没有this指针,且静态成员方法只能调用其他的静态成员方法,只能访问静态成员函数。