以前没仔细看过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的私有数据成员
这不是更简单?
各位高手可以发表一下自已的看法