[英]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.