默认情况下静态函数中的所有变量都是静态的吗?

时间:2015-06-03 19:32:45

标签: c++ static

nil

默认情况下 bar 是静态的吗?标准对此有何看法?

2 个答案:

答案 0 :(得分:8)

不,在C ++中创建变量static的唯一规定是static keyword

例如,如果您将Foo更改为:

static void Foo()
{
    int bar = 0;

    bar++;
    cout << bar << endl;
}

然后致电:

Foo();
Foo();

由于bar 不是静态,因此输出将为:

  

1
  1

但是,如果您将bar声明为static,请执行以下操作:

static void Foo()
{
    static int bar = 0;

    bar++;
    cout << bar << endl;
}

您的输出实际上是:

  

1
  2

答案 1 :(得分:5)

不,默认情况下,静态函数内的变量会在自动存储中分配。

static函数和static变量表示在C和C ++语法中重复使用相同关键字的正交概念

  • 创建函数static告诉编译器将其隐藏在其他翻译单元中定义的函数中
  • 创建变量static告诉编译器将该变量的数据放在静态存储中。

static用于函数与静态存储区无关。

相关问题