我正在尝试用 C++11 实现一个类似单例的对象。我从另一个用户那里得到了这个例子。
它使用构造函数和复制构造函数私有和默认创建一个对象,以及一个 instance() 函数来返回静态对象。
据我了解,这应该防止创建该对象的两个实例。但正如您在我的 main.cpp 中看到的那样,我创建了两个实例,它编译并运行。
我的对象创建错误还是什么?我不明白。
对象.hpp:
#ifndef OBJECT_H
#define OBJECT_H
#include <iostream>
using namespace std;
class Object
{
private:
Object() = default;
Object(const Object&) = delete;
public:
// Singleton in C++11
static Object& instance() { static Object z; return z; }
};
#endif // OBJECT_H
主.cpp:
#include "object.hpp"
int main()
{
Object* object = new Object();
object->instance();
Object* object2 = new Object();
object->instance();
return 0;
}