在 C++ 中,全局常量的訪問權限與其他全局變量相同。默認情況下,它們具有外部鏈接,這意味著它們可以在定義它們的源文件之外的其他源文件中訪問。
要將全局常量設置為只在定義它的源文件中訪問,您需要使用 static
關鍵字。這將使其具有內部鏈接,從而限制其訪問權限。
以下是一個示例:
// file1.cpp
#include <iostream>
// 全局常量,具有外部鏈接
const int global_constant = 42;
// 全局常量,具有內部鏈接
static const int static_global_constant = 100;
void print_constants() {
std::cout << "global_constant: " << global_constant << std::endl;
std::cout << "static_global_constant: " << static_global_constant << std::endl;
}
// file2.cpp
#include <iostream>
extern const int global_constant; // 聲明外部鏈接的全局常量
int main() {
std::cout << "global_constant in file2: " << global_constant << std::endl;
// 下面的代碼將導致編譯錯誤,因為 static_global_constant 只能在 file1.cpp 中訪問
// std::cout << "static_global_constant in file2: " << static_global_constant << std::endl;
return 0;
}
在這個例子中,global_constant
是一個具有外部鏈接的全局常量,可以在其他源文件中訪問。而 static_global_constant
是一個具有內部鏈接的全局常量,只能在定義它的源文件(file1.cpp)中訪問。