C++关键字static
1.静态成员变量: 当static
关键字用于类的成员变量时,意味着这个变量是类的所有实例共享的。无论类实例有多少个,静态成员变量只有一个副本。静态成员变量经常用于存储类的公共数据,如配置选项或计数器。
1 2 3 4 5 6 | class MyClass { public : static int count; // 静态成员变量 }; int MyClass::count = 0; // 在类外初始化 |
2.静态成员函数: 静态成员函数属于类本身,而不是类的任何特定实例。因此,它们可以通过类名直接调用,而不需要创建类的实例。静态成员函数可以访问静态成员变量,但它们不能访问非静态成员变量,因为非静态成员变量依赖于具体实例。
1 2 3 4 5 6 | class MyClass { public : static void StaticMethod() { // 可以访问静态成员,但不能访问非静态成员 } }; |
通过类名调用: 由于静态成员函数不依赖于对象实例,它们可以通过类名直接调用,如下所示:
1 | MyClass::StaticMethod(); |
3.静态局部变量: 在函数内部声明的静态变量,即使函数调用结束,它们的值也会保留。这意味着静态局部变量在程序的整个生命周期内只被初始化一次,并且每次函数调用都会使用相同的内存空间。
1 2 3 4 | void Function() { static int localStaticVar = 0; // 静态局部变量 localStaticVar++; } |
4.静态全局变量: 当static
关键字用于全局变量时,它限制了变量的作用域,使其只在定义它的文件内部可见,从而避免了不同文件间的命名冲突。
1 | static int globalVar; // 只在当前文件内可见 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix