一、静态局部变量
1.static修饰的局部变量,不像其他局部变量一样函数退出时就消失,它的存储于全局区,生命周期是整个文件;
2.但是静态局部变量的作用域还是和其他局部变量一样在函数中,只能在该函数中调用,退出函数后还存在但不能使用;
3.在声明时如果没有初始化,编译器会将它自动初始化为0。
二、静态全局变量:
1.静态全局变量只能在本文件中访问,其他文件不可访问;
2.其他文件中可以定义与它同名的变量,互不影响。
三、静态函数
1.静态函数只能在声明它的文件中可见,其他文件中不能使用该函数;
2.其他文件中可以定义与它同名的函数,互不影响。
四、静态属性
1.static修饰的属性称为静态属性,静态属性属于类而非某个对象,无论实例化了多少个对象,它只有一份;
2.任何一个该类的对象都可以对它操作,一个对象改变了它的值,其他对象中的也会改变;
3.所以,就算没有实例化对象,也可以直接操作静态数据成员;
4.相当于加了一个类约束和访问控制属性限制的全局变量,表示只能在这个类里面使用(作用域),它存储(生命周期)在全局区;
5.静态属性必须在类外定义和初始化;
5.和普通数据成员一样,静态数据成员也遵从public, protected, private访问规则;
6.初始化格式:数据类型 类名::静态成员名=值 (int Class::num=0);
7.访问方式:① 类对象名.静态成员名 (cla.num);
② 类类型名::静态成员名 (class::num);
五、静态成员函数
1.static修饰的函数称为静态函数,静态函数也是属于整个类,而不是某个对象;
2.静态成员函数没有隐藏this指针;
3.它无法访问属于类对象的非静态属性,也无法调用非静态成员函数;
4.只能访问静态属性 和 调用静态函数;
5.态函数其实是加了类约束 及 访问控制属性限制的 全局函数。