在函数内定义静态对象是正确的方法吗?

suk*_*mar 1 c++ singleton

class MyClass {
public:
    static MyClass& getInstance() {
        static MyClass obj;
        return obj;
    }
};


int main()
{
    MyClass& obj1 = MyClass::getInstance();
    MyClass& obj2 = MyClass::getInstance();

        |
        |

    MyClass& obj1000 = MyClass::getInstance();  
}
Run Code Online (Sandbox Code Playgroud)

如果多次调用getInstance()函数,它是否总是返回相同的对象,并且所有obj1,obj2 ... obj1000都将引用同一个对象.

Ern*_*ill 6

是的,这是一种有效的方法,是的,所有objXXX都将引用同一个对象.该对象将在第一次调用该函数时构造.