static 关键字 静态成员变量及静态成员函数

static类成员

类成员类似于C语言的全局变量,但是与全局变量又有所不同,例如,全局变量是可以被任何的用户代码所修改,而且全局变量破坏了对象的封装性。

使用类的 static 成员的优点

使用 static 成员而不是全局对象有三个优点。
1. static 成员的名字是在类的作用域中,因此可以避免与其他类的成员或
全局对象名字冲突。
2. 可以实施封装。static 成员可以是私有成员,而全局对象不可以。
3. 通过阅读程序容易看出 static 成员是与特定类关联的。 这种可见性可清
晰地显示程序员的意图。

4.存储在全局(静态)数据分配区

 

static变量与局部变量的区别

(1)该变量在全局数据区分配内存(局部变量在栈区分配内存);
(2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化(局部变量每次函数调用都会被初始化);
(3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0(局部变量不会被初始化);
(4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,也就是不能在函数体外面使用它(局部变量在栈区,在函数结束后立即释放内存);

 

静态全局变量不能被其它文件所用(全局变量可以);
其它文件中可以定义相同名字的变量,不会发生冲突(自然了,因为static隔离了文件,其它文件使用相同的名字的变量,也跟它没关系了);

static成员函数

在外部定义时,无需添加static关键字。

没有this指针的存在。

只能调用静态成员变量和函数。

posted @ 2019-03-22 15:30  张三编程分享  阅读(293)  评论(0编辑  收藏  举报