C++|C++中static的作用

C++|C++中static的作用

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

如果面试时问这个问题 , 我觉得这样回答是最好的 。 在函数体内 , 被static修饰声明的变量在这个函数体内维持值不变;
【C++|C++中static的作用】在模块内 , 被static修饰的变量只能在这个模块内调用 , 不能被其他模块所调用 。 作用类似于本地全局变量;
在模块内 , 被static修饰的方法只可以被一模块内函数所调用 。 函数限制模块本地范围内使用 。
在类里面 , 被static修饰的变量是没有隐含this指针 , 在类里面定义 , 只能在类外声明;

在类里面 , 被static修饰的函数只能访问静态数据成员 , 不能访问非静态数据 。
如果深究 , 你还可以从内存来讲解一下 。 static修饰的变量或者方法都是存储在静态区域 , 会被隐式初始化为0 , 从生命周期再简单描述 。
其实static的用处特别广 , 这就导致了许多设计模式和软件方法都会用到这个关键字 。 比如用static来构造单例模式 。 这个也是面试官特别喜欢考的地方 。 一般来讲 , 面试不会给你程序 , 只要你能够自圆其说 , 不要说得离谱 , 讲的八九不离十即可 , 因为这个东西不是统一的 , 个人的理解最后所表达的含义不同 , 面试官有时候听完也不知道你讲啥 , 真的是这样的 。 但是如果你讲的很清晰明了 , 说明你们受到的思想和读到的程序理解层次和出发点是差不多的 。