利用静态成员和静态函数设计实现一个单件类Singleton。所谓单件类,就是指在内存中最多仅有一个对象实例。提示: a) 不可以用构造函数创建对象,才能确保对象创建是可控的;(通过构造函数私有化来实现的) b) 当前是否有存在对象必须是随时可以知道的,并且如果存在,随时可以取得该对象的指针或者引用(通过静态成员变量来保存) c) 因为构造函数私有化,导致变量无法从外部创建,因而必须为用户提供一个获取对象的接口,当前对象如果存在,该接口直接返回对象引用,否则创建对象并返回对象引用。(通过静态成员函数来实现
时间: 2024-04-13 16:28:27 浏览: 89
要设计一个单件类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;
}
};
Singleton* Singleton::instance = nullptr; // 初始化静态成员变量
int main() {
Singleton& instance1 = Singleton::getInstance();
Singleton& instance2 = Singleton::getInstance();
// instance1 和 instance2 是同一个实例
return 0;
}
```
在上述代码中,通过调用`Singleton::getInstance()`来获取单件类的实例。在第一次调用时,会创建一个新的对象并赋值给静态成员变量`instance`,以后每次调用该函数都会直接返回该实例。这样就保证了在内存中最多只有一个对象实例。
阅读全文