1、C语言中的关键字static和C++中的关键字static有什么区别
在C中static用来修饰局部静态变量和外部静态变量、函数。而C++中除了上述功能外,还可以用来定义类的成员变量和函数,即静态成员和静态成员函数。
2、static变量的作用
1)static变量有2个特性,全局性和记忆性
2)在函数体内,一个被声明为静态的变量在这一函数被调用的过程中其值维持不变
3)在模块内(但在函数体外),它的作用域为该模块内的所有函数,它不能被模块外的其他函数访问。它是一个本地的全局变量。
4)内部函数应该在当前源文件中说明,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。
4、C++中static数据成员的特点
1)对于非静态数据成员,每个对象都有自己的复制品,而静态数据成员被当做类的成员,无论有多少个对象,都只有一份复制品,由该类的所有对象所共享
2)静态数据成员存储在全局数据区,定义时需要分配空间,所以不能再声明中定义。
3)静态数据成员和普通数据成员一样遵从pulic、protected、private访问规则
4)static成员变量初始化在类外,此时不能带上static的关键字。protected和private的static变量虽然在类外初始化,但是不能再类外被访问
5、全局变量和static变量的区别
1)静态数据成员只能在本文件中被访问,文件外不可以,但是全局变量在别的文件中也可以使用
2)static变量可以加上protected和private修饰,隐藏信息,而全局变量不行
6、static变量只能被初始化一次,而且不能再头文件中定义static变量