c++ - 这是什么意思?

标签 c++ operator-overloading smart-pointers

在文件“内存”中的·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);
}

第二个函数中的&**是什么意思?谢谢。

最佳答案

this 是指向 unique_ptr 对象的指针。

*this 是对 unique_ptr 对象的引用。

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

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

关于c++ - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15044874/

相关文章:

java - 有没有办法在 Java 中向 GregorianCalendar 添加方法?

c++ - 如何在 C++ 中的两个类之间定义(重载)对称二元运算符,同时考虑 r 值?

c++ - 为什么指针返回时不能自动转换为unique_ptr?

c++ - 模糊指向堆或堆栈对象的智能指针

c++ - 什么情况下需要共享智能指针而无法使用 unique?

c++ - 从 8 位值中获取最高有效位

c++ - 调用派生类的虚函数时出现段错误

c++ - float 和科学记数法

c++ - 共享内存大小计算c++

c++ - 澄清智能指针的 operator* 和 operator-> 重载