修饰二:静态全局变量
这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。其他文件中也可以定义和该变量一样的名字且不会冲突;
修饰三:静态函数
和静态全局变量一样,只能在该文件中被调用,其他文件不能调用。
C++中static的作用
C++中static的作用除了具有C中的作用之外还具有以下作用:
修饰一:静态数据成员
1、静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间;
2、静态数据成员可以被初始化,但是只能在类体外进行初始化,若未对静态数据成员赋初值,则编译器会自动为其初始化为0;
3、静态数据成员既可以通过对象名引用,也可以通过类名引用。
修饰二:静态成员函数
1、静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员;
2、静态成员函数没有this指针;
3、静态成员函数主要用来访问静态数据成员而不能访问非静态成员。
【简单延伸一点:为什么静态成员不能访问非静态成员?】
首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而非static的成员是在创建对象的时候,即new 操作的时候才初始化的;
先后顺序是先加载,才能初始化,那么加载的时候初始化static的成员,此时非static的成员还没有被加载必然不能使用,而非static的成员是在类加载之后,通过new操作符创建对象的时候初始化,此时static 已经分配内存空间,所以可以访问!
简单点说:静态成员属于类,不需要生成对象就存在了.而非静态需要生成对象才产生。
原文:https://blog.51cto.com/15051869/2566462