C++单列模式的面试题
时间: 2024-09-14 15:00:59 浏览: 46
最全面的面试题大全
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,面试官可能会问关于单例模式如何实现、何时使用以及如何处理线程安全等问题。
1. **实现**:
- 饿汉式(静态初始化):在类加载时就创建实例。`Singleton.h`:
```cpp
class Singleton {
private:
static Singleton& getInstance();
Singleton() = default; // 构造函数私有,防止实例化
public:
static Singleton* getInstancePtr() { return &instance; }
// 公共方法...
};
```
- 懒汉式(延迟初始化):需要加上互斥锁以保证线程安全。`Singleton.cpp`:
```cpp
std::mutex mtx;
Singleton* instance = nullptr;
Singleton& getInstance() {
std::lock_guard<std::mutex> lock(mtx);
if (instance == nullptr) {
instance = new Singleton();
}
return *instance;
}
```
2. **应用场景**:
- 资源管理(如数据库连接、文件系统操作)。
- 单一入口点(如日志记录、配置管理等)。
3. **注意事项**:
- 线程安全:在多线程环境下,必须确保单例实例的获取是原子操作,避免数据竞争。
- 双重检查锁定(Double-Check Locking)优化懒汉式,只在第一次需要时才加锁。
阅读全文