静态成员函数中静态变量的名称相同
Same name for a static variable within a static member function
可能的重复项:
系统如何识别不同函数中同名的静态变量?
编译器如何在两个具有相同名称但在两个不同(静态)成员函数中定义的局部静态变量之间区分?
class Type
{
public:
static void fun()
{
static bool sameName = false;
// work with sameName
}
static void moreFun()
{
static bool sameName = false;
// work with sameName
}
};
它与作用域有关。
相同名称存在于两个不同的作用域中/在本例中为两个函数作用域
所以在内部,变量可能用名称fun.sameName和moreFun.sameName来引用(名称只是我发明的arbtitrary,但显示了原理)。
在C++ SPEC(例如:N3337)中说:
3 关键字 static 可用于声明具有静态存储 duraion 的局部变量。
(第62页;第3.7.1节静态存储持续时间)
在您的情况下,变量static bool sameName
属于函数的作用域 fun
。而另一个变量static bool sameName
属于函数的作用域moreFun
。这两个静态变量属于不同的范围。static
关键字仅影响持续时间,它不是效果范围。
相关文章:
- 是否可以将变量/函数返回作为模板参数传递
- 是否有一种方法可以修复编译器未找到特定的OPENCV变量/函数
- 访问实例化类的变量/函数
- 如何在变量函数参数列表中检测给定类型的参数的可用性,并在处理完所有参数后采取行动
- C 多组变量函数参数
- 最有cpu效率的方法是使用std::算法和变量函数模板的参数
- 在此作用域中未声明条件变量函数
- C 关于将数组复制到向量并调用其变量 /函数
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 在应用变量函数的矩阵元素上循环
- 如何向调试器隐藏变量/函数名
- C++11变量函数类型模板参数
- 变量函数参数的奇怪问题
- C++变量函数和cout
- c++模板变量函数未定义引用
- 我可以使用枚举类值作为变量函数的参数吗?
- 从另一个类访问变量/函数
- <"变量/函数"的多重定义>
- 从c++到C文件中定义的变量/函数的未定义引用
- 为什么转换变量函数参数很重要?