用简单直观的方式来实现一个单例的类 ConfigUtil,这里不使用宏,模版等技术,先了解实现一个单例类的理论知识,然后在此基础之上进行思考,优化,最终让我们的实现真正的达到实用的目的,而不只是功能上可用,但是质量却很不好。
实现单例时,需要注意以下几点:
- C++ 的书里经常强调:一个类,至少要提供
构造函数
,拷贝构造函数
,析构函数
,赋值运算操作符
,尤其是有成员变量是指针类型,保存指针的数组或集合时更是需要注意(实现深拷贝) - 要限制创建和删除 ConfigUtil 的对象
- 构造函数定义为 private 的,是为了防止其他地方使用 new 创建 ConfigUtil 的对象
- 析构函数定义为 private 的,是为了防止其他地方使用 delete 删除 ConfigUtil 的对象
- 拷贝构造函数定义为 private 的,是为了防止通过拷贝构造函数创建新的 ConfigUtil 对象
- 赋值运算操作符定义为 private 的,是为了防止通过赋值操作创建新的 ConfigUtil 对象
- 通过
ConfigUtil::getInstance()
获取 ConfigUtil 的对象 - 当程序结束的时候调用
ConfigUtil::release()
删除它的对象,否则会造成内存泄漏。虽然程序结束了,内存会被系统回收,但是理论上还是要保证谁分配的内存谁回收