Effective C++ - 条款13 - 以对象管理资源
- 直接使用指针管理对象并不安全,因为 可能忘记delete指针/delete语句并未按照预期执行而提前被exception中断了程序 etc
- RAII观念:资源取得时机便是初始化时机(说人话就是:管理对象的初始化就应该在获得其期望所管理资源或对象能够获得时). 例如使用工厂函数返回的对象来初始化std::auto_ptr(可以视为管理者)这玩意儿现在都不用了,很落后了。因为被拷贝后原auto_ptr被置空,再调用析构就危险了
- RAII的观念比较抽象,具体就是:
这是通过在对象的构造函数中分配资源,并在析构函数中释放资源来实现的。
- RCSP 是一种智慧型引用计数指针也是一个老玩意儿了,虽然避免了2所说的auto_ptr问题,但仍存在部分问题
- c++11之后就开始用智能指针了。就把这些智能指针当作RAII对象就行了,让这些智能指针来管理产生的对象(资源),然后这些智能指针会自动做释放。
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/16860834.html