static用法

static的使用

Static函数在实现的时候也不需要static的修饰,因为static是声明性关键字

不在类中

Static变量:该变量仅在本cpp文件中有效

Static函数:该函数仅在本cpp文件中有效

在类中

Static变量:是所有该类对象的实例共有的,仅有一次初始化,为对象们共有

Static函数:仅能访问该类中其他同样是静态成员变量

访问方式:

可以是类的实例对象,也可以是通过类名(不需要实例化)

什么时候使用static

对于普通变量

更倾向于设置为非static,因为static的类变量是全局变量,全局变量的弊端大家应该都了解。常见的一个编程错误就是错误地是用来了static变量,结果几个实例对象相互影响导致错误。

对于常量变量

更倾向于采用static的方式,再加上const、final修饰。因为空间和时间效率都更高,因为不需要构造并保存到每个类实例中。

对于函数

如果能够采用static(说明没有访问到非static的成员变量),则倾向于采用static的方式 ,因为静态方法的效率高但注意这往往预示着代码坏味道。举个例子,比如我们有一个业务类,里面有一个函数是递归删除文件。将这个函数设置为static固然是可以,但其实这也表明了这个函数和这个类关系不大,将这个函数抽取到类似FileUtil的类里面会更好。如果一个函数虽然和类关系不紧密,但是暂时不知道是否有其他类需要调用,则可以先设置为类的static函数。日后,如果其他地方需要使用此函数,static函数抽取起来比非static函数要方便。

原文地址:https://www.cnblogs.com/baoxiaofei/p/4113663.html