方法中声明的静态变量有多少个实例
How many instances are there, of static variables declared in a method?
在这种情况下,静态变量应该只有一个或零个实例。这取决于f()
是否被调用。
void f()
{
static int a;
}
但是,如果f()
是一个方法,则有多少个静态变量的实例?
class A
{
void f()
{
static int a;
}
};
与函数相同:0 或 1。检查起来也很容易:
class A
{
public:
void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
int main()
{
A a;
a.f();
a.f();
A b;
b.f();
}
输出:
1
2
3
但是,如果您从class A
中剥离并使函数像这样虚拟:
class A
{
public:
virtual void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
class B:public A
{
public:
void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
然后,基类和每个派生类的a
变量将不同(因为函数也不同)。
相同...作为成员函数与成为静态局部函数正交。
相关文章:
- 从C++实例化QML
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 复制列表初始化的隐式转换的等级是多少
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- while循环中while循环的时间复杂度是多少
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 临时实例的生存期是多少
- OpenMP 如何知道嵌套了多少个循环实例
- 创建多个实例后,静态数据成员的值是多少
- 模板有多少实例化
- 方法中声明的静态变量有多少个实例
- 一个非内联非虚拟方法向类的实例添加了多少字节?C++
- 在C++中使用Templates时,编译器如何知道要实例化多少数据类型