C++ 什么是&;**什么意思?
在文件“memory”中的·std::unique_ptr·code中,我看到操作符重载函数如下C++ 什么是&;**什么意思?,c++,operator-overloading,smart-pointers,C++,Operator Overloading,Smart Pointers,在文件“memory”中的·std::unique_ptr·code中,我看到操作符重载函数如下 typename tr1::add_reference<_Ty>::type operator*() const { // return reference to object return (*this->_Myptr); } pointer operator->() const { // return pointer to class object
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);
}
typename tr1::add_reference::type operator*()const
{
//返回对对象的引用
返回(*本->\u Myptr);
}
指针运算符->()常量
{
//返回指向类对象的指针
返回(&**this);
}
第二个函数中的
&**
是什么意思?谢谢。此
是指向唯一\u ptr
对象的指针
*此
是对唯一\u ptr
对象的引用
**此
使用运算符*
(即*此->\u Myptr
)取消对唯一ptr的引用
因此,&**this
是指向unique\u ptr
(即&(*this->\u Myptr)
)指向的对象的指针。根据发布的代码,**this
正在调用操作符*
重载,该重载返回对对象的引用。因此,&**此
成为返回对象的地址
换句话说,**此
与(*此->\u Myptr)
相同,&**此
与&(*此->\u Myptr)
相同