static的用法总结
一、修饰内置类型为静态变量
将原本为全局变量或者局部变量的数据,变为静态全局变量和静态局部变量,存储在data区。
静态变量只初始化一次,未初始化的静态变量会默认初始化为0。静态全局变量只在本文件可见,外部文件无法访问。而静态局部变量只在定义的作用域内可见,但他们的生存周期都是整个程序运行时期。
二、static修饰函数
用static修饰的函数,无法被两个文件同时使用,例如,在main.CPP 中声明定义了 函数static int add()那么该函数只能在main.cpp中调用,在其他.cpp 例如public.cpp中无法调用
三、static修饰数据成员
static修饰的数据成员不再栈上分配内存,而在data段中,static修还是的数据野不能通过构造函数来进行初始化,因此成员必须在类外初始化并且只能初始化一次。
四、static修饰成员方法
静态成员方法可以类内或类外定义,但必须类内声明,该成员方法没有this指针,所以不能直接引用非static数据成员或调用类的非static成员方法,只能调用类的static成员数据和static成员方法。static成员方法不能同时被声明为虚函数。