锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源 / auto_ptr目的、如何适应auto_ptr、auto_ptr为何废弃
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
量化预测
股票离线分析软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容


auto_ptr目的、如何适应auto_ptr、auto_ptr为何废弃


最近看httplib的源代码,里面用到了share_ptr,要掌握share_ptr要先掌握auto_ptr,虽然auto_ptr已经废弃了,但是它是过渡类,中间过渡类掌握了才好掌握后面的类,这是auto_ptr的目的,过渡。

在研究了msdn和codeproject文章下,说下自己理解,不会看msdn,找我了,左边有联系方式。

另外auto_ptr的功能目的就是不让程序员在C++开发时写delete,就是忘记写时,C++也能帮你回收内存。

但是内存处理很麻烦,遇到了auto_ptr解决不了的问题,所以废弃了auto_ptr,解决不了问题是:

在函数调用出现两个auto_prt对象共用一块内存区时,函数内对象在函数退出已经释放了内存区,而函数外再释放已经释放的内存区时,会崩溃。 函数调用参数auto_ptr对象在出现时,会拥有内存区,而实参会让出内存区,但是实参不知道已经让出去了。这bug是编写auto_ptr时就遗留下的,就像没用深拷贝一样,用了浅拷贝。 再修补也没必要,就换新类。

习惯了原始指针,要考虑如何适应auto_ptr,其它它的思想和COM机制类似,也和STL里的string相仿,string里封装了char*,而auto_ptr里封装了指针,另外学过C#的Type类的思想也会理解auto_ptr。

string对象,用c_str获取到原始指针,而auto_ptr是用get函数获取指针。

说实话,类封装的太多,像套娃一样,真是不舒服,如果当初一步到位,把new关键字设计一些类似new的关键字,比如new_auto,用底层来保留指针的属性,new_auto分配出来的还是原始指针*,和以前模式兼容,就更好了。

至于想获取指针属性信息,再用isof和强制转换实现,这多舒服。看到类型名长,咱们华人就不舒服,不适应,西方适应了这类修饰风格,所以一直搞这样的形式。

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近