int& GetStaticVar() { static int a = 100; a++; return a; } int main(int argc, char const* argv[]) { cout << GetStaticVar() << endl; // output:101 int c = GetStaticVar(); cout << c << endl; // output:102 c = c + 200; cout << c << endl;
// 虽然函数返回的是局部静态变量的引用,上一步骤也对该变量进行了改变, // 但是实际上,在再次调用该函数的时候,该引用变量的值,并没有受到外部对该变量的修改而改变 cout << GetStaticVar() << endl; // output:103 } 结论:函数内静态变量系统会自动赋初始值,并且只能在该函数内进行修改