关于static静态变量的几个问题

来源:互联网 发布:一掌经六道轮回的算法 编辑:程序博客网 时间:2024/05/17 07:41

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变量

原创粉丝点击