& **是什么意思?

时间:2013-02-23 19:50:19

标签: c++ operator-overloading smart-pointers

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

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);
}

&**在第二个函数中意味着什么?感谢。

2 个答案:

答案 0 :(得分:6)

this是指向unique_ptr对象的指针。

*this是对unique_ptr对象的引用。

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

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

答案 1 :(得分:5)

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

换句话说,**this(*this->_Myptr)相同,&**this&(*this->_Myptr)相同。