2013-02-23 371 views
2

在·的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); 
} 

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

回答

6

this是指向unique_ptr对象的指针。

*this是对unique_ptr对象的引用。

**this使用operator*(即*this->_Myptr)取消参考unique_ptr

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

5

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

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