C++大厂面试真题宝典 精选100道

86 阅读3分钟

C++大厂面试真题宝典 精选100道

C++大厂面试真题宝典 精选100道

**
获取ZY↑↑方打开链接↑↑**

简述 C++ 中 static 关键字的作用,分别说明其在局部变量、全局变量和成员变量中的用法和意义。

在 C++ 中,static 关键字用于定义静态存储持续时间的变量,主要有以下三种应用场景:局部变量、全局变量和成员变量。每种情况下,static 关键字的具体作用和意义有所不同。

1. 局部变量中的 static

用法: 当一个局部变量被声明为 static 时,该变量在函数调用之间保持其值不变,并且只在程序的整个生命周期内分配一次内存。

意义

  • 持久性:该变量的生命周期与程序相同,而不是与函数调用相同。这意味着即使函数结束,该变量的值仍然保留,下一次调用该函数时可以继续使用。
  • 初始化:局部 static 变量只会在第一次调用该函数时初始化一次,之后的调用不会重新初始化。

示例

#include <iostream>void demo() { static int count = 0; // 只会初始化一次 count++; std::cout << "Count: " << count << std::endl;}int main() { for (int i = 0; i < 5; i++) { demo(); // 每次调用,count 的值会增加 } return 0;}

2. 全局变量中的 static

用法: 在全局作用域中使用 static 关键字,可以限制全局变量的作用域,使其仅在定义它的文件内可见。

意义

  • 封装性:通过将全局变量声明为 static,可以避免与其他文件中同名的全局变量发生冲突。这在大型项目中非常有用,有助于维护代码的可读性和可维护性。

示例

// file1.cppstatic int globalVar = 0; // 只有在 file1.cpp 中可见void increment() { globalVar++;}// file2.cppvoid accessGlobal() { // globalVar 无法访问,因为它是 static 的}

3. 成员变量中的 static

用法: 在类内声明的成员变量为 static 时,该变量属于类本身,而不是类的某个实例。所有对象共享同一个 static 成员变量。

意义

  • 共享数据:所有类的对象可以访问和修改同一静态成员变量。这对于统计类的实例数量或共享某些类级别的信息非常有用。
  • 内存管理:静态成员变量在程序的整个生命周期中只有一份实例,节省了内存。

示例

#include <iostream>class Counter {public: static int count; // 声明一个静态成员变量 Counter() { count++; } static int getCount() { return count; }};// 在类外定义静态成员变量int Counter::count = 0;int main() { Counter a; Counter b; Counter c; std::cout << "Total count: " << Counter::getCount() << std::endl; // 输出 3 return 0;}

总结

  • 局部变量中的 static:保持变量的值在函数调用之间持久,生命周期与程序相同。
  • 全局变量中的 static:限制变量的作用域,使其仅在定义文件内可见,增强封装性。
  • 成员变量中的 static:允许类的所有实例共享同一成员变量,节省内存并实现类级别的数据共享。

理解 static 关键字的作用及其在不同上下文中的使用,有助于更高效地管理变量的生命周期和作用域,从而提高程序的稳定性和可维护性。