2

在文件“memory”中的·std::unique_ptr·代码中,我看到运算符重载函数为

typename tr1::add_reference<_Ty>::type operator*() const
{   
   // return reference to object
   return (*this->_Myptr);
}

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

第二个功能是什么&**意思?谢谢。

4

2 回答 2

6

this是指向unique_ptr对象的指针。

*this是对unique_ptr对象的引用。

**this正在取消引用unique_ptr使用operator*(即*this->_Myptr)。

因此,是指向(ie )&**this所指向的对象的指针。unique_ptr&(*this->_Myptr)

于 2013-02-23T19:52:26.683 回答
5

根据发布的代码,**this正在调用operator*重载,它返回对对象的引用。所以&**this成为返回对象的地址。

换句话说,**this与 相同(*this->_Myptr),并且与&**this相同&(*this->_Myptr)

于 2013-02-23T19:53:17.743 回答