单例模式:
整个工程中只能创建一个对象
1-懒汉式
不足:多线程下可能出现线程不安全问题
class Manager{
private:
static Manager* ptr;
Manager(){}// 构造函数 私有化
Manager(const Manager&m){}// 拷贝构造函数 私有化
public:
Manager* getInstance() {
if(nullptr == ptr) {
ptr = new Manager;
}
return ptr;
}
};
// 指针置空,防止出现野指针
Manager* Manager::ptr = nullptr;
2-饿汉式
优势:可以避免多线程带来的不安全问题
class Manager{
private:
static Manager* ptr;
Manager(){}// 构造函数 私有化
Manager(const Manager&m){}// 拷贝构造函数 私有化
public:
Manager* getInstance() {
return ptr;
}
};
// 在类加载完成之后就创建对象
Manager* Manager::ptr = new Manager;