C++中static关键字用法总结

C++中static关键字有两类用法:和C语言用法相同的static和C++面向对象程序中的static。前者是静态全局变量、局部变量和静态函数,后者是类中的静态变量和静态函数。

一、和C语言用法相同的static

1、静态全局变量

特点:
    - 未初试化的话会被自动初始化为0;
    - 静态全局变量在全局数据区分配内存;
    - 静态全局变量在作用域是在本文件内,所以在其他文件中无法被使用。

2、 静态局部变量

 特点:
 - 静态局部变量在全局数据区分配内存;
 - 静态局部变量只会被初始化一次(如果没有显示初始化也会被初始化为0);
 - 在其作用域外无法使用,但是程序再次进入其作用域其值是上次退出时保持的值。

3、静态函数

函数返回值类型前加上static关键字之后就被定义为了静态函数。其特点只有一点,其作用域就是本文件,在其他文件中不可见(无法使用它,如果重名也不会产生冲突)。

二、面向对象程序中的static

1、类的静态数据成员

- 类的静态数据成员也是放在全局数据区;
- 为类的所有对象共有,实际上在对象产生之前类的静态数据成员就存在了。
- 类的静态数据成员有两种访问形式:
- <类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
- 静态数据成员不会和程序中的其他全局变量名字冲突。

2、类的静态函数成员

-类的静态函数成员和类的静态数据成员一样都是类的一部分,不属于某一个对象; 
-类的静态函数成员无法访问类的某个对象的非静态数据成员和非静态函数成员。
-类的非静态函数成员可以访问类的静态数据和静态函数;
-如果在类体外定义函数的话,就不能指定static了。

你可能感兴趣的:(C++)