2. 利用静态成员和静态函数设计实现一个单件类Singleton。所谓单件类,就是指在内存中最多仅有一个对象实例。提示: a) 不可以用构造函数创建对象,才能确保对象创建是可控的;(通过构造函数私有化来实现的) b) 当
时间: 2024-04-13 07:28:16 浏览: 120
使用静态成员和静态函数设计实现单例模式时,我们可以按照以下步骤进行操作:
1. 将类的构造函数私有化,防止外部直接创建对象实例。
2. 在类内部定义一个私有静态成员变量,用于保存单例对象的实例。
3. 提供一个公有的静态函数,用于获取单例对象的实例。在该函数中,判断静态成员变量是否为空,如果为空则创建一个对象实例并赋值给静态成员变量,如果不为空则直接返回静态成员变量的值。
4. 在需要使用单例对象的地方,通过调用静态函数获取单例对象的实例。
下面是一个示例代码:
```cpp
class Singleton {
private:
static Singleton* instance; // 私有静态成员变量
Singleton() {} // 私有构造函数
public:
static Singleton* getInstance() { // 公有静态函数
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr; // 静态成员变量初始化
int main() {
Singleton* obj1 = Singleton::getInstance();
Singleton* obj2 = Singleton::getInstance();
// obj1 和 obj2 是同一个对象实例
return 0;
}
```
在上述代码中,我们通过静态成员变量 `instance` 来保存单例对象的实例。在 `getInstance()` 函数中,首先判断 `instance` 是否为空,如果为空则创建一个对象实例并赋值给 `instance`,如果不为空则直接返回 `instance` 的值。这样就可以确保在内存中最多只有一个对象实例存在。
阅读全文