effective c++读书笔记(二)

条款13

以对象管理资源

资源获得时机便是初始化时机 RAII

引用计数

智能指针无法运用于数组

条款14

在资源管理器类中小心copying行为

方案1:对于一个mutex我们希望禁止复制

方案2:对底层资源进行引用计数

shared_ptr指定删除器,当引用次数为0时被调用

class Lock

{

public:

explicit Lock(Mutex * pm):mutexptr(pm,unlock)

{

lock(mutexptr.get());

}

private:

std::tr1::shared_ptr<Mutex>  mutexptr;

};

方案三:复制底部资源,深度拷贝

方案四:转移底部资源拥有权

条款15

在资源管理类中提供对原始资源访问

显示:

get()

->/*

隐式:

operator Fonthandle() const

{return f;}

条款16

成对使用new和delete是采用相同形式

tpyedef std::string Addresslines[4];

std::string * pal = new AddressLines;

delete[]pal;//这里addresslines是一个数组。

条款17

以独立语句将newed对象置于智能指针

process(std::tr1::shared_ptr<Widget>(new widget),priority())

可能会造成泄漏资源,调用process之前做三件事:

调用priority

执行new widget

调用shared_ptr

但三者顺序不定,不同编译器不一致

如果

执行new widget

调用priority

调用shared_ptr

而调用priority出现异常,widget未加入shared_ptr


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值