static 的作用

非类中

1) 隐藏 

  修饰对象: 全局变量 和 函数

  编译多个源文件添加static 使其作用域 限定在 当前源文件

  带来一个好处: 不必担心命名冲突

2)默认初始化为0

  对象: 未初始化全局变量(BSS 段 默认初始化本来就是 0) 和 局部变量

3) 改变静态局部变量的生存周期

  生命周期为整个源程序

  静态局部变量储存位置为 (全局区)DATA or BSS

  只初始化一次

类中

c++ 重用了static 关键字

1) 静态数据成员

  独立于该类的对象, 属于整个类(换言之 每个类都有之)

2)静态成员函数

  与普通成员函数相比, 静态成员函数不与任何对象关联

  不具有this 指针

  无法访问属于对象的非静态数据成员,也无法访问非静态成员函数。

 

内存分区

1)堆

2)栈

3)全局储存区(DATA , BSS)

4)文字常量区 

5)程序代码区

 

----------------

摘录一下muduo一书的内容:

 

c语言static 关键字的用法

1: 用于修饰内部变量,即函数内静态变量。 变量生存周期周期长于该函数,使得函数具有一定“状态”。使用静态变量的函数一般是不可重入的,也不是线程安全的,比如strtok(3);

2: 用在文件级别(函数体)之外),修饰变量或函数,表示该函数活变量在本文件可见,其他文件看不到、也访问补刀该变量或函数。

 

c++ 语言的static 关键字的四种用法

c++引入class类,在保持与C语言兼容的同时,static关键字有有了两种新用法

3:用于修饰class的数据成员,即所谓“静态成员”。这种成员的生存周期大于class对象(instance),静态数据成员每一个类有一份,普通数据成员每一个instance有一份。

4:用于修饰class成员函数,即所谓“静态成员函数”。这种成员函数智能访问class variable 和其他静态成员程序函数, 不能访问instance vairable 或instance method.

 

posted @ 2014-12-11 19:33  帆_06_17  阅读(130)  评论(0)    收藏  举报