C++中的static
浅谈C中static
之前好像有人说过C++就是带类的C,从整体上来看C++兼容C语言的大多数语法,但是在一些细节位置上,C++还是与C有所不同。今天主要讲一下C和C++中的static关键字使用的区别。
简单来说C语言中的关键字static主要是为了屏蔽本类中的方法与变量。主要用于在项目中隐藏一些实现的细节,注意这里的隐藏细节主要是指对于较为繁琐底层方法进行抽象,从而给上层提供更方便使用的接口。举个很简单的例子,你的电脑主机有一层厚重的外壳,而你在使用过程中并不关系里面怎么运转,你只需要按下开机键就行。实际上如果给你打开盒子后可能由于你的干涉导致机器不能正常运行。所以,这种隐藏细节的好处主要有两点:一是提供更加方便使用的方法;二是防止外部干涉模块的正常运行。
如果需要书面总结,那么C语言static关键字作用有以下几点
- 隐藏方法和变量
- 静态变量会在程序开始时就初始化,并存放在静态存储区
- 变量会初始化为0
C++中的static关键字
静态关键字到C++后功能有所改变,这种改变主要体现在类中使用。如果你不是在类中使用关键字static则于C语言无区别,而在类中使用static定义变量或方法后,效果如下。
- 变量和方法为这个类所有,数据存储在全局数据区,变量和方法的使用与类的实例化对象无关(所有实例共享一份),可以通过类直接使用方法和变量。
- 被static修饰的方法中无法使用this指针
- static修饰的变量定义和初始化必须在类外部,建议放在头文件的实现文件中,实例化的过程必须按照<类型><类名>::<变量>=<初始值>