c++ - 函数中的全局静态变量与静态变量?

标签 c++

使用上有什么区别:

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/

相关文章:

c++ - 代码::阻止调试器失败

c++ - 来自 WMI 的 nVidia 驱动程序版本不是我想要的

c++ - 使用枚举指定的函数填充 vector

c++ - 我可以安全地指向重新分配的 boost::optional 的数据吗?

c++ sprintf 函数和 fstream 来创建/检查文本文件

c++ - 如何将 2 位从一个 int 复制到另一个?

c++ - 数组下标的无效类型

c++ - 多态性是否适用于在 C 中传递的 C++ 对象引用?

c++ - 类中方法声明的顺序对编译器有影响吗?

c++ - Qt:如何继承QQuickPath类