2. 利用静态成员和静态函数设计实现一个单件类Singleton。所谓单件类,就是指在内存中最多仅有一个对象实例。提示: a) 不可以用构造函数创建对象,才能确保对象创建是可控的;(通过构造函数私有化来实现的) b) 当
时间: 2024-04-13 16:28:18 浏览: 227
面向对象设计模式:Singleton 单件(创建型模式)
创建一个单件类时,需要注意以下几点:
1. 将构造函数私有化,以防止外部直接通过构造函数创建对象。
2. 定义一个静态成员变量来保存类的唯一实例。
3. 提供一个静态函数来获取类的唯一实例。
4. 在静态函数中判断类的唯一实例是否已经存在,如果不存在则创建一个新的实例并返回,否则直接返回已有的实例。
下面是一个示例代码:
```cpp
class Singleton {
private:
static Singleton* instance; // 静态成员变量用于保存类的唯一实例
Singleton() {} // 私有化构造函数
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
static void destroyInstance() {
delete instance;
instance = nullptr;
}
};
Singleton* Singleton::instance = nullptr; // 初始化静态成员变量
int main() {
Singleton* obj1 = Singleton::getInstance(); // 获取类的唯一实例
Singleton* obj2 = Singleton::getInstance(); // 再次获取实例,应该是同一个对象
if (obj1 == obj2) {
cout << "obj1 and obj2 are the same instance" << endl;
}
Singleton::destroyInstance(); // 销毁类的唯一实例
return 0;
}
```
这样设计的单件类能够确保在内存中只有一个对象实例。
阅读全文