使用上有什么区别:
static Foo foo;
// ...
foo.func();
和:
Foo& GetFoo(void)
{
static Foo foo;
return foo;
}
// ...
GetFoo().func();
哪个更好?
最佳答案
主要区别在于构建发生的时间。在第一种情况下,它发生在 main()
开始之前的某个时间。在第二种情况下,它发生在第一次调用 GetFoo()
期间。
在第一种情况下,代码有可能在其初始化之前(非法)使用 foo
。在第二种情况下这是不可能的。
关于c++ - 函数中的全局静态变量与静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188414/