在·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);
}
&**
在第二个函数中意味着什么?感谢。
答案 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)
相同。