2. 利用静态成员和静态函数设计实现一个单件类Singleton。所谓单件类,就是指在内存中最多仅有一个对象实例。提示: a) 不可以用构造函数创建对象,才能确保对象创建是可控的;(通过构造函数私有化来实现的) b) 当前是否有存在对象必须是随时可以知道的,并且如果存在,随时可以取得该对象的指针或者引用(通过静态成员变量来保存) c) 因为构造函数私有化,导致变量无法从外部创建,因而必须为用户提供一个获取对象的接口,当前对象如果存在,该接口直接返回对象引用,否则创建对象并返回对象引用。(通过静态成员函数来实现)
时间: 2024-04-13 21:28:28 浏览: 99
根据上述提示,下面是一个使用静态成员和静态函数实现的单例类Singleton的示例代码:
```cpp
#include <iostream>
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(); // 再次获取实例,应该是同一个对象
if (&obj1 == &obj2) {
std::cout << "obj1 and obj2 are the same instance" << std::endl;
}
return 0;
}
```
这样设计的单例类能够确保在内存中只有一个对象实例。通过静态成员变量`instance`保存唯一实例,通过静态成员函数`getInstance()`来获取该实例,并在需要时创建实例。因为构造函数是私有的,无法从外部创建对象,所以必须通过`getInstance()`来获取对象的引用。
阅读全文