1. static 修饰范围
a) static 可以用于修饰变量
全局变量,局部变量,成员变量
b) static可以用于修饰函数
可以修饰成员函数,但是不能修饰普通函数。并且函数内部只能调用类的静态成员。
2. static 变量生命周期
a) static 局部变量生命周期
当函数第一次调用时,会调用这个变量的构造函数,生命周期开始,直到程序执行结束。包括成员函数中的临时变量。
b) static全局变量
在main函数执行前,会进行初始化,即会调用该对象的构造函数。生命周期,整个程序的生命周期。
需要注意的是,普通全局变量可以extern 出去,在其他cpp文件中使用,但是如果加上static修饰符,就只能在当前cpp中使用,其他文件不能应用这个静态全局变量。
c) static 成员变量
在类中声明,但是只要有调用改成员的地方,那么这个变量就需要在类外进行定义。
在定义的时候,会调用变量的构造函数。生命周期也是程序的生命周期。在main函数执行之前就已经调用了构造函数。