所以我在看一些代码,就碰到了。
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()
返回类型既是引用又是指针作为返回类型。这是什么意思?
答案 0 :(得分:4)
X *
是指向X
的指针。
T &
是对T
的引用。如果T
恰好是指针类型,则它是对指针的引用:X* &
是对X*
的引用。
因此,Data*&
是指向Data
的指针的引用。
答案 1 :(得分:2)
从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";
}