C++11以上,使用 Meyers' Singleton:
class Singleton {
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
// 禁用拷贝构造函数和赋值运算符
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
private:
// 私有构造函数
Singleton() = default;
~Singleton() = default;
};
模板类:
template<typename T>
class Singleton {
public:
static T& getInstance() {
static T instance;
return instance;
}
// 禁用拷贝构造函数和赋值运算符
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
protected:
// 保护构造函数和析构函数,确保只能被继承
Singleton() = default;
virtual ~Singleton() = default;
};
继承:
// 继承自Singleton模板类
class MySingleton : public Singleton<MySingleton> {
// 声明友元类以便访问私有构造函数
friend class Singleton<MySingleton>;
private:
// 私有构造函数,防止外部实例化
MySingleton() = default;
~MySingleton() = default;
public:
// 自定义方法
void doSomething() {
// ...
}
};
1101

被折叠的 条评论
为什么被折叠?



