《Effective C++ 》学习笔记——条款13:以对象管理资源...
分类:
编程语言 时间:
2014-11-23 23:31:43
阅读次数:
259
假设我们使用一个投资行为的程序库:
#include "stdafx.h"
#include
#include
using namespace std;
class Investment
{
public:
};
class InvestmentFactory
{
public:
virtual Investment* createInvestment()
{
...
分类:
编程语言 时间:
2014-11-20 17:07:45
阅读次数:
138
第一节 条款13中讲到“资源取得的时机便是初始化时机”并由此引出“以对象管理资源”的概念。通常情况下使用std中的auto_ptr(智能指针)和tr1::shared_ptr(引数智能指针)作为管理资源的对象。事实上,这种管理方法十分有效。但是,auto_ptr和tr1::shared_ptr只.....
分类:
其他好文 时间:
2014-11-17 15:25:48
阅读次数:
179
这一节基本讲述的是将资源放进管理对象,防止忘记释放资源。1.一般New和Delete使用场景void fun() { SimpleClass* pSimpleClass1 = new SimpleClass; .... // 如果这中间发生异常返回,则delete pSimpl...
分类:
其他好文 时间:
2014-11-17 15:22:01
阅读次数:
141
引用计数的智能指针是对《Effective C++ 条款13:以对象管理资源》的一个实现。我们要设计一个智能指针,使他能够管理资源,在正确的实际调用资源的析构函数。首先我们需要一个指针reference来指向资源,当智能指针构造时,用reference指针指向资源,在我们确定资源应该被析构时,我们对...
分类:
其他好文 时间:
2014-09-01 20:57:53
阅读次数:
319
条款13:以对象管理资源许多资源被动态分配于heap内而后被用于单一区块或函数内。它们应该在控制流离开那个区块或函数时被释放。标准程序库提供的auto_ptr正是针对这种形式而设计的特制产品。auto_ptr是个类指针对象,也就是智能指针,其析构函数自动对其所指对象调用delete。以对象管理资源的...
分类:
编程语言 时间:
2014-08-31 19:59:51
阅读次数:
292
条款13:以对象管理资源
使用RAII,获得资源后立刻放进管理对象,管理对象运用析构函数确保资源被释放。
为防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。
两个常被使用的RAII类是tr1::shared_ptr和tr1::auto_ptr。前者通常是较佳选择,因为其拷贝行为比较直观。若选择auto_ptr,复制动作会使被复制物指向null.
条款14...
分类:
编程语言 时间:
2014-08-22 16:22:49
阅读次数:
250
三、资源管理 资源就是一旦你使用了它,将来不用的时候必须归还系统。C++中最常用的资源就是动态内存分配。其实,资源还有 文件描述符、互斥器、图形界面中的字形、画刷、数据库连接、socket等。 1、 以对象管理资源 void f() { investment *plv = createInvestm...
分类:
编程语言 时间:
2014-08-20 13:47:52
阅读次数:
187
RAII(resource acquisition is initialization):资源获取时便是初始化时机。不论控制流如何离开执行的区域块,其析构函数被调用,资源被释放。为防止内存泄露使用auto_ptr或shared_ptr();auto_ptr sp(new class)+shared_...
分类:
其他好文 时间:
2014-08-11 17:22:02
阅读次数:
204