C++中static的作用

282 阅读2分钟

static可以说在所有语言中都基本存在,这是一个关键词,一个出现频数特别高的关键词,很多人看到这个会慌,因为有这个修饰的方法,变量都会有高级的含义。而面试中也经常考这个,不为别的,就看你基础厚不厚,认知透彻不。static字面意思是静态的。

       如果面试时问这个问题,我觉得这样回答是最好的。在函数体内,被static修饰声明的变量在这个函数体内维持值不变;

在模块内,被static修饰的变量只能在这个模块内调用,不能被其他模块所调用。作用类似于本地全局变量;

在模块内,被static修饰的方法只可以被一模块内函数所调用。函数限制模块本地范围内使用。

在类里面,被static修饰的变量是没有隐含this指针,在类里面定义,只能在类外声明;

在类里面,被static修饰的函数只能访问静态数据成员,不能访问非静态数据。

        如果深究,你还可以从内存来讲解一下。static修饰的变量或者方法都是存储在静态区域,会被隐式初始化为0,从生命周期再简单描述。

        其实static的用处特别广,这就导致了许多设计模式和软件方法都会用到这个关键字。比如用static来构造单例模式。这个也是面试官特别喜欢考的地方。一般来讲,面试不会给你程序,只要你能够自圆其说,不要说得离谱,讲的八九不离十即可,因为这个东西不是统一的,个人的理解最后所表达的含义不同,面试官有时候听完也不知道你讲啥,真的是这样的。但是如果你讲的很清晰明了,说明你们受到的思想和读到的程序理解层次和出发点是差不多的。