面试题答案
一键面试方法一:使用 static
关键字
在源文件中定义全局变量时,使用 static
关键字修饰,这样该变量的作用域就被限制在当前源文件内。
示例代码如下:
// file1.cpp
static int staticGlobalVariable = 10;
void printStaticGlobal() {
std::cout << "Static global variable value: " << staticGlobalVariable << std::endl;
}
方法二:使用命名空间
将全局变量定义在一个命名空间内,其他源文件如果不使用 using
声明或 using
指示,就无法访问该命名空间内的变量。
示例代码如下:
// file2.cpp
namespace MyNamespace {
int namespaceGlobalVariable = 20;
}
void printNamespaceGlobal() {
std::cout << "Namespace global variable value: " << MyNamespace::namespaceGlobalVariable << std::endl;
}
在其他源文件中,若要访问 MyNamespace::namespaceGlobalVariable
,需使用 MyNamespace::
前缀:
// main.cpp
#include <iostream>
// 假设已经包含了 file2.cpp 中函数的声明
int main() {
// std::cout << namespaceGlobalVariable << std::endl; // 错误,直接访问会报错
printNamespaceGlobal();
return 0;
}