对auto_ptr有研究的人进来,希望版主及在线高手关注一下

BlueDog 2009-05-13 08:46:47
以前没仔细看过auto_ptr的代码,今天仔细看了VS2003带的代码,有一个地方不是很了解,希望高手解惑

对于auto_ptr,VS2003实现了->的重载,它的具体代码如下:

_Ty *operator->() const _THROW0()
{ // return pointer to class object
return (&**this);
}


如果看汇编它是
00412033 mov ecx,dword ptr [this]
00412036 call std::auto_ptr<TEST>::operator* (411622h)

也很好理解,但是我不理解的是,为什么它不直接了当地
return _Myptr; // _Myptr 是auto_ptr的私有数据成员
这不是更简单?

各位高手可以发表一下自已的看法
...全文
149 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyh_baoding 2009-05-14
  • 打赏
  • 举报
回复
帮顶
jameshooo 2009-05-13
  • 打赏
  • 举报
回复
*this --> auto_ptr<_Ty>&
**this --> auto_ptr<_Ty>&::operator*() --> _Ty&
&**this --> &(_Ty&) --> _Ty*

后续的VC版本已经不再采用这种实现,而是直接返回get(),而get()中直接返回_Myptr。
biweilun 2009-05-13
  • 打赏
  • 举报
回复
你OD调下看看。return (&**this);只是一种思想的表示,虽然和返回*this没什么区别
00412036 call std::auto_ptr <TEST>::operator* (411622h)
这个充其量算是个类操作函数指针的地址,你到push ebp里看看子函数撒,看完了再说
BlueDog 2009-05-13
  • 打赏
  • 举报
回复
呵呵,的确不是真正的汇编,是调试窗口里的,不过很说明问题
biweilun 2009-05-13
  • 打赏
  • 举报
回复
我晕,你看的那能算是汇编么。充其量算是个伪汇编。
wocow3 2009-05-13
  • 打赏
  • 举报
回复
把VS2003中_Ty& operator*() const _THROW0()的代码贴下

或许调用operator*()时做了一些检查
BlueDog 2009-05-13
  • 打赏
  • 举报
回复
另外,大家在验证auto_ptr是否零地址一般都如何写
是不是写成

struct TEST
{
};

auto_ptr<TEST> pint(new TEST(2));

if(pint.get())
{
}
lyserver 2009-05-13
  • 打赏
  • 举报
回复
学习,并标记。
BlueDog 2009-05-13
  • 打赏
  • 举报
回复
不错,但是对于编译后,其实不存在什么类型的,因为成员变量也只是一个偏移值
healer_kx 2009-05-13
  • 打赏
  • 举报
回复
汇编无类型,
C++是有类型的。
同样的地址,却未必是同样类型的指针哦。
内容概要:本文介绍了DeepSeek在职场中的应用,从提示语技巧到多场景应用,涵盖了DeepSeek的基础模型(V3)、深度思考模型(R1)及其联网搜索功能。文中详细描述了DeepSeek的模型对比,包括操作规范、结果导向、路径灵活性、响应模式和风险特征等方面。此外,还探讨了DeepSeek在制作可视化图表、PPT、海报、视频以及批量生成新媒体文案等具体应用场景中的使用方法和技巧。最后,文章展示了DeepSeek在市场调查、AI应用开发等方面的应用实例,强调了其在人机协同和共生领域的潜力。 适用人群:适用于希望提升工作效率和创新能力的职场人士,特别是从事数据分析、内容创作、市场营销、AI开发等领域的专业人士。 使用场景及目标:①通过DeepSeek的基础模型(V3)和深度思考模型(R1)进行高效的任务处理和复杂推理;②利用DeepSeek制作可视化图表、PPT、海报和视频,提高内容创作的质量和效率;③通过DeepSeek进行市场调查和AI应用开发,优化业务流程并推动创新。 其他说明:DeepSeek不仅提供了强大的AI工具,还强调了人机协同的重要性。用户在使用过程中应注意操作规范,结合实际需求选择合适的模型,并充分利用DeepSeek的各项功能来实现高效的职场应用。文中还提到了多个国际竞赛中的获奖情况,展示了DeepSeek团队在AI领域的卓越实力。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧