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笔记的更多相关文章

  1. Mongodb源代码阅读笔记:Journal机制

    Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...

  2. C++ Programming language读书笔记

    C语言,结构化程序设计.自顶向下.逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序.选择.循环三种基本控制结构构造. 模块结构:"独立功能,单出.入口&quo ...

  3. [置顶] Effective STL 学习笔记

    看Effective STL 作的一些笔记,希望对各位有帮助. 以下是50条条款及相关解释. 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型. 2. 不要试图编写独立于容器类型的代码. 3. ...

  4. 读书笔记 |Google C++编程风格指南

    Google C++编程风格指南 ## 0. 背景 每一个C++程序员都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug.难于阅读和维护. 本指 ...

  5. Boost使用笔记(Smart_ptr)

    我是Word写的,复制过来实在懒得在排版了,有兴趣的朋友可以去我的百度文库看,谢谢 http://wenku.baidu.com/view/34e485e2f61fb7360b4c653e.html ...

  6. C++内存管理学习笔记(5)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  7. C++内存管理学习笔记(6)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  8. Directx11学习笔记【四】 封装一个简单的Dx11DemoBase

    根据前面两个笔记的内容,我们来封装一个简单的基类,方便以后的使用. 代码和前面类似,没有什么新的内容,直接看代码吧(由于代码上次都注释了,这次代码就没怎么写注释o(╯□╰)o) Dx11DemoBas ...

  9. 《C++ Primer Plus》学习笔记10

    <C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...

随机推荐

  1. MyBatisPlus代码生成 mvc项目

    package com.test; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus ...

  2. pug

    https://github.com/pugjs/pug pug模板使用https://www.cnblogs.com/gudi/p/8080736.html

  3. CentOS 下 安装 nginx 执行配置命令 ./configure 报错

    CentOS 下 安装 nginx 执行配置命令 ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx 时提示以下错误: checkin ...

  4. 1-2SpringBoot项目属性配置

    前面我们讲解了SpringBoot HelloWorld实现 今天具体来讲解上那个application.properties项目配置文件 打开是空白 里面可以配置项目,所以配置项目我们 alt+/ ...

  5. array_multisort 对关联数组进行排序的问题 PHP

    我们在php的数组操作中经常用到对数组进行排序的问题,这里说的是对关联数组进行排序需要用到函数 array_multisort . array_multisort(array_column($arr, ...

  6. JuJu团队1月3号工作汇报

    JuJu团队1月3号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 测试dataloader 将model嵌入GUI 无 婷婷 调试代码 提升acc 无 恩升 -- 写p ...

  7. Doxygen 注释语法规范

    背景 这一块的内容更多的是作为了解,但是可以以这样的规范作为自己的编程注释习惯,提高自己的软实力. Doxygen注释语法 注释格式 块注释建议统一使用 /** -- ***/ 行注释建议统一使用 / ...

  8. MyBatis源码部分简单地解析

    . 一.解析xml: > org.apache.ibatis.session.SqlSessionFactoryBuilder.build(java.io.InputStream, java.l ...

  9. 第3节 sqoop:5、实现数据的控制导入

    导入表数据子集 我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集.它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录. where子句 ...

  10. java理解抽象类 2.19

    // Telphone.java public abstract class Telphone{ public abstract void call(); public abstract void m ...