Effective C++ 条款17 以独立语句将newed对象置入智能指针
2024-08-24 22:37:23
对于函数:
int priority();
void processWidget(std::tr1:: shared_ptr<Widget> pw,int priority);
调用以上函数
processWidget(new Widget,priority());
以上调用错误,因为shared_ptr构造函数需要一个原始指针,但该构造函数是个explicit构造函数,无法进行隐式转换。
而且其调用顺序也无法确定。
所以,我们一般使用分离语句,创建Widget,然后置入只能指针中。最后再将此智能指针传给processWidget。
即:
std:: tr1:: shared_ptr<Widget> pw(new Widget);
processWidget(pw,priority()); // 这个调用动作绝不至于造成泄露。
记住:
以独立语句将newed对象存储与智能指针中。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。
最新文章
- redis的安装及使用
- NodeJS(node.exe, npm, express, live-server)安装
- Atitit.阿里云c盘 系统盘爆满解决方案
- Java 控制反转和依赖注入模式【翻译】【整理】
- bzoj1567: [JSOI2008]Blue Mary的战役地图
- request和response的中文乱码问题
- 最核心4大NFC技术规范详解
- 一个小型的DBHelper的诞生(1)
- HTML&;JS笔记(1)
- sublime与Emment
- Vue-Methods中使用Filter
- PHP MySQL Order By 关键词
- hadoop配置项笔记 - yarn
- HDU 5333 Undirected Graph(动态树)
- 软件推荐-有限元开发软件FELAC
- JavaScript中的递归
- beego 初体验 - orm - 增删改查
- 内存大小设置 Java heap space错误
- C语言学习 - 字节对齐
- Axure学习了解
热门文章
- 爬虫cookie
- BZOJ 2725: [Violet 6]故乡的梦
- IOS 自动布局-UIStackPanel和UIGridPanel(四)
- Linux暂停和恢复进程
- python 字典 key 和value 互换
- 【Luogu】P1393动态逆序对(树套树)
- BZOJ 3750: [POI2015]Pieczęć 【模拟】
- 算法复习——LCT(bzoj2049洞穴勘测)
- annotation之@Autowired、@Inject、@Resource三者区别
- (转)WaitForSingleObject函数的使用