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

&**2 番目の関数の意味は何ですか? ありがとう。

4

2 に答える 2

6

thisunique_ptrオブジェクトへのポインタです。

*thisunique_ptrオブジェクトへの参照です。

**thisunique_ptrusing operator*(つまり) を逆参照してい*this->_Myptrます。

つまり、(ie )&**thisが指すオブジェクトへのポインタです。unique_ptr&(*this->_Myptr)

于 2013-02-23T19:52:26.683 に答える
5

投稿されたコードに従って、オブジェクトへの参照を返すオーバーロードを**this呼び出しています。operator*so&**thisが返されるオブジェクトのアドレスになります。

つまり、**thisと同じ(*this->_Myptr)であり、 と&**this同じ&(*this->_Myptr)です。

于 2013-02-23T19:53:17.743 に答える