- static是在各种编程语言中均较为常用的一个关键字。
- static包含两种含义,一种是类或结构体外部使用static关键字,另一种是类或结构体内部使用static关键字。类或结构体外部使用static,意味着声明的static符号在链接时,将只在内部链接,只能对定义它的翻译单元可见。类或结构体内部使用static,该static变量将于类的所有实例共享内存,意味着该static变量在类的所有实例中仅有一个实例。
- 静态变量或函数意味着,当需要将这些静态函数或变量与实际定义的符号链接时,链接器不会在这个翻译单元作用域之外寻找静态函数或变量符号的定义。
- 从上述代码可以看到,在Static.cpp中定义的静态变量s_Variable并不会影响Main.cpp中继续定义s_Variable变量,如果把Static.cpp中s_Variable的static去掉,编译的时候就会报错。
- 类或结构体的静态方法只能调用类或结构体的静态变量。
- 如果上述代码struct中包含静态的变量z,则在链接的时候会报以上图片中的错,因为我们需要在使用变量z之前定义变量z。
- 从上图可以看到,类或结构体中的静态变量或静态方法在类或结构体的所有实例中仅有一个实例,上诉实例中静态变量z在e1和e2中均为10;因此类或结构体中静态变量或方法通过上述方式调用完全没有意义,可采用下图的形式进行调用。
- 局部静态变量:允许我们声明一个变量,该变量的生命周期相当于整个程序的生命周期,但它的作用域被限制在该函数中。示例代码如下:
- 以上为静态局部变量在实现单例模式中的应用,当然实际实现中,需要将Singleton类的默认构造函数等删除。
C++学习笔记(十):c++中的静态(static)
于 2023-09-11 17:15:17 首次发布