c++ auto_ptr笔记
1.auto_ptr 不可以使用指针惯用的赋值初始化方式,只能直接初始化。
示例:
char *p = 'A';//error
auto_ptr<char>ptr = new char;//error,被当作普通指针对待了
auto_ptr<char>ptr4 = auto_ptr<char>(new char);//ok
auto_ptr<char>ptr4 = auto_ptr<char>(new char[100]);//ok
使用下面方式:
#include<memory>
auto_ptr<char>ptr(new char);//ok
auto_ptr<char>ptr = new char;//error
或者
auto_ptr<char>ptr(new char);
auto_ptr<char>ptr1;
ptr1 = ptr;//ok
2.下面两种情况是有区别的:
X x;
Y y(x);//显示转换
和:
X x;
Y y = x;//隐式转换
3.auto_ptr的操作经常以下模式进行:
(1).获取一些资源
(2).执行一些动作
(3).释放所获取的资源
如果一开始获取的资源被绑定于局部对象上,当函数退出时,它们的析构函数被调用,从而自动释放这些资源。
4.auto_ptr拥有权只能有一次,当交出拥有权的时候,就不再拥有它。
auto_ptr<char>ptr(new char);
auto_ptr<char>ptr1(ptr);//交出拥有权后ptr为NULL
这样在释放的时候ptr1自动释放一次就可以了。
5.函数使用
auto_ptr<char> f()
{
auto_ptr<char>ptr(new char);
return ptr;
}
6.auto_ptr参数传递的注意事项
示例:
auto_ptr<char> f()
{
auto_ptr<char>ptr(new char);
return ptr;
}
void bad_printf(auto_ptr<char>p)
{
if(p.get() == NULL){
cout<<"NULL"<<endl;
}
else{
cout<<*p;
}
}
auto_ptr<char>ptr4 = f();//分配一个指针
*ptr4 = 'C';//指针赋值
bad_printf(ptr4);//ptr4将拥有权交给p, 则ptr4为NULL
*ptr4 = '7';//将字符7赋值给值为NULL的ptr4,将出现运行期错误
72页
版权声明:本文为博主原创文章,未经博主允许不得转载。
c++ auto_ptr笔记的更多相关文章
- Mongodb源代码阅读笔记:Journal机制
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...
- C++ Programming language读书笔记
C语言,结构化程序设计.自顶向下.逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序.选择.循环三种基本控制结构构造. 模块结构:"独立功能,单出.入口&quo ...
- [置顶] Effective STL 学习笔记
看Effective STL 作的一些笔记,希望对各位有帮助. 以下是50条条款及相关解释. 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型. 2. 不要试图编写独立于容器类型的代码. 3. ...
- 读书笔记 |Google C++编程风格指南
Google C++编程风格指南 ## 0. 背景 每一个C++程序员都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug.难于阅读和维护. 本指 ...
- Boost使用笔记(Smart_ptr)
我是Word写的,复制过来实在懒得在排版了,有兴趣的朋友可以去我的百度文库看,谢谢 http://wenku.baidu.com/view/34e485e2f61fb7360b4c653e.html ...
- C++内存管理学习笔记(5)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(6)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- Directx11学习笔记【四】 封装一个简单的Dx11DemoBase
根据前面两个笔记的内容,我们来封装一个简单的基类,方便以后的使用. 代码和前面类似,没有什么新的内容,直接看代码吧(由于代码上次都注释了,这次代码就没怎么写注释o(╯□╰)o) Dx11DemoBas ...
- 《C++ Primer Plus》学习笔记10
<C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...
随机推荐
- 7.2 Varnish 模式
- Commons BeanUtils 中对Map的操作
CSDN学院招募微信小程序讲师啦 程序员简历优化指南! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! Commons BeanUtils 中对Map的操作 ...
- JAVA地址栏重写很详细
这几天蛋疼.看看别人url重写是怎么搞的..1.解释下什么事url重写,以及它的优缺点: URL重写,其实就是把带一大堆参数的url,变成一个看上去很规矩的url.例:/viewthread.jsp? ...
- Eclipse设置jvm参数的三种方式
方式1. 修改Elipse运行JRE默认JVM参数打开Eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面 ...
- greenplum 存储过程 索引信息
涉及的索引表 参考:http://blog.nbhao.org/1539.html pg_index pg_indexes pg_stat_all_indexes # 记录当前数据库中所有的索引的使用 ...
- HTML5学习第四天
HTML5学习第四天 一.HTML列表 HTML列表,有无序表,有序表以及自定义表,列表于列表之间可以实现嵌套 列表相关操作 <ul> <li>(多选)谁世界第二可爱?< ...
- SQLyog连接报错 Error No.2058 Plugin caching_sha2_password could not be loaded
参考链接:https://blog.csdn.net/qq_22766431/article/details/80628583 win10系统更新安装Mysql8.0,连接SQLyog的时候出现下面错 ...
- 剑指offer 数组中重复的数
在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的数组{ ...
- 《Interest Rate Risk Modeling》阅读笔记——第十章 主成分模型与 VaR 分析
目录 第十章:主成分模型与 VaR 分析 思维导图 一些想法 推导 PCD.PCC 和 KRD.KRC 的关系 PCD 和 KRD PCC 和 KRC 第十章:主成分模型与 VaR 分析 思维导图 一 ...
- Java之反射 — 用法及原理
Java之反射 - 用法及原理 定义 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象 ...