使用之间有什么不同:
static Foo foo;
// ...
foo.func();
Run Code Online (Sandbox Code Playgroud)
和:
Foo& GetFoo(void)
{
static Foo foo;
return foo;
}
// ...
GetFoo().func();
Run Code Online (Sandbox Code Playgroud)
哪个更好?
Rob*_*obᵩ 10
主要区别在于施工时.在第一种情况下,它发生在main()开始之前的某个时间.在第二种情况下,它发生在第一次调用期间GetFoo().
在第一种情况下,可以foo在初始化之前(非法)使用代码.在第二种情况下,这是不可能的.