static关键字作用
隐藏,保持变量内容的持久性,默认初始化为0
static修饰局部变量
static int a ; a默认初始化为0
void aa( int)
{
static int a;
}
限定了a的作用域在函数aa内部,函数外部不能看到a,a只初始化一次。下次调用aa函数,a的值会继承上次函数运行的结果。
static修饰全局变量
全局变量在其他文件内也是可见的,加上了static后,变量只在当前文件可见。
static修饰函数
static修饰函数,函数在当前文件可见,不会同其他文件的同名函数起冲突
类的静态成员
在类中,静态成员可以实现多个对象之间数据共享。只存储一处,供所有对象共享。
类的静态函数
static 除了可以声明静态成员变量,还可以声明静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。静态函数可以通过类来调用。非静态函数不行。
class Point{
public:
void init()
{cout << "init" << endl;}
static void output()
{cout << "output";}
};
int main()
{
Point p;
//Point::init(); 会报错
p.init();
Point::output();
}
静态成员变量不能在类的内部初始化,在类的内部只是声明,定义必须在类外,定义时不能加上static关键字,
定义时可以指定初始值,也可以不指定,不指定时系统默认其初始值为0.