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页

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. mac 10.11.6 自带apache配置记录
  2. [BZOJ2391]Cirno的忧郁
  3. ldap实现用户认证
  4. hdu 2586 How far away
  5. php中curl模拟浏览器来传输数据
  6. MariaDB链接超时优化
  7. iOS快速单例宏
  8. 洛谷P1204 [USACO1.2]挤牛奶Milking Cows
  9. POJ 3164 Command Network 最小树形图模板
  10. linux定时任务crond那些事!
  11. mac安装GNU命令行工具
  12. HDU 5352 MZL&#39;s City
  13. JS框架设计读书笔记之-小知识
  14. 一个比喻讲明Docker是什么
  15. ve2.0 v-for循环报错的解决方案
  16. TXMLDocument 创建空值节点不要缩写
  17. pyqt5 添加属性-类方法用属性形式访问
  18. ActiveMQ 到底是推还是拉?
  19. windows mfc 程序,不同程序通信和互斥
  20. loglevel-metamask

热门文章

  1. django静态文件处理
  2. luogu P3358 最长k可重区间集问题
  3. IDEA 单行注释与代码对齐
  4. 101、Java中String类之判断是否由数字组成
  5. centos查找文件\目录\内容命令
  6. Python中的*可变参数与**关键字参数
  7. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:内嵌下拉菜单的按钮组
  8. pta 拯救007(Floyd)
  9. vs2010编译C++ 对象的使用
  10. 使用 esxcli storage vmfs unmap 命令在精简置备的 LUN 上回收 VMFS 删除的块