下载此文档

智能指针总结.doc


文档分类:IT计算机 | 页数:约42页 举报非法文档有奖
1/42
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/42 下载此文档
文档列表 文档介绍
C++智能指针使用总结听语音ll|l浏览:1385l|l更新:2015-04-2420:27C++提供了4种智能指针用于对分配的内存进行自动释放,这些智能指针如下:auto_ptr、unique_ptr、shared_ptr、weak_ptr。其中auto_ptr在C++98标准引入,后三种在C++11标准中加入。而auto_ptr已经被C++11所摒弃,建议使用后三种智能指针,这4种智能指针使用模板(template)实现。在此总结下个人对这4种智能指针肤浅认识。工具/g++++编译器lC++++智能指针是行为类似于指针的类对象。它使用设计模式中的代理模式,代理了原始“裸”指针的行为,为指针添加了更多更有用的特性。++引入异常机制后,智能指针由一种技巧升级为一种非常重要的技术,因为如果没有智能指针,程序员必须保证new对象能在正确的时机delete,四处编写异常捕获代码释放资源,而智能指针则可以在退出作用域时——不管是正常离开或是因异常离开——总调用delete来析构在堆栈上动态分配的对象。++异常处理的真正功能在于它具有为异常抛掷前构造的所有局部对象(那么智能指针对象也适用)自动调用析构函数的能力(C++异常机制不仅仅在于它能够处理各种不同类型的异常)。所以在异常退出智能指针对象作用域时,总能由C++异常机制调用析构函数释放在堆栈上动态分配的对象。,正常退出对象(智能指针对象也属于此列)作用域也会自动调用析构函数释放在堆栈上动态分配的对象。,将“裸”指针包装成智能指针对象可以实现动态分配的内存对象的自动释放。++智能指针对象可以像原指针那样直接使用运算符,如赋值运算符'=',指针运算符'->',解引用运算符'*'。这点可以从下面的”shared_ptr智能指针--shared_ptr模板类摘要“部分可以印证。(C++98):#include<memory>:usingstd::shared_ptr;:C++++启用版本命令:g++ -std=c++98 -c-:++11及以上标准,即g++-std=c++11-c-o,:‘auto_ptr’isdeprecated (‘auto_ptr‘被反对使用),其中最有名的应该是C++98标准中的“自动指针”std::auto_ptr,它部分解决了获取资源自动释放的问题,例如:.#include<memory>14.#include<iostream>15.#include<string>::cin;::cout;::string;::auto_ptr;.{:::stringstr;:(conststrings):str(s){cout<<"Objectcreated!\n";}28.~Report(){cout<<"Objectdeleted!\n";}(stringowner)const{cout<<owner<<str<<"\n";}30.};(void)33.{<Report>ps(newReport("Usingauto_ptr."));->comment(string("ps:"));<Report>p1;=ps; //赋值完毕后ps已经失去对内存对象的所有权,->comment(string("p1:"));39.//ps->comment(string("afterp1=ps:")); //error,Segmentationfaul40.}./*Result:!!46.*/,从而代理了原始指针。虽然它是一个对象,但因为重载了operator*后operator->,其行为非常类似指针,可以把它用在大多数普通指针可用的地方。当退出作用域时(离开作用域或异常),C++会保证auto_ptr对象销毁,调用auto_ptr的析构函数,进而使用delete操作符删除原始

智能指针总结 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数42
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小65 KB
  • 时间2019-10-18
最近更新