簡體   English   中英

在同一函數中使用指針和引用作為返回類型

[英]Using pointer and reference as return type in same function

所以我看了一些代碼,我遇到了這個。

class Data{
 private:
  int data;
  Data* next;
 public:
   Data(int d=0): data(d), next(NULL) {}
   void SetData(int d) { data = d;}
   int  GetData() { return data; }
   Data*& GetNext() { return next; }
 }

GetNext()返回類型既是引用又是指針作為返回類型。 這是什么意思?

X *是指向X的指針。

T &是對T的引用。 如果T恰好是指針類型,那么它是對指針的引用: X* &是對X*的引用。

因此, Data*&是對指向Data的指針的引用。

GetNext()返回的值是對Data指針的引用。 這意味着它就像一個指針,但如果你改變它,它將改變原始對象。

int main()
{
     Data*   d1 = new Data(1);
     std::cout << d1->GetData() << " : " << d1->GetNext()   // prints null;
               << "\n";

     d1->getNext() = new Data(2);   // Modify the value.

     std::cout << d1->GetData() << " : " << d1->GetNext()   // Does not print null
               << " -> " 
               <<  d1->GetNext()->GetData() << " : " << d1->GetNext()->GetNext()
               << "\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM