Question:
Scott Meyers says:
If so, it undermines the basics, because C ++ does not allow you to change the referenced object .
Question: Why does the below code work in VS2017?
int main()
{
int i = 10;
int& r = i;
r++;
int j = 20;
r = j;
i = 5;
int& r2 = r;
return 0;
}
Answer:
Apparently, you came across this text here . But there we are talking about something completely different – the assignment of two variables, which are class objects in which there is a reference member.
And the question of what should happen with the link. The context does not mean that you cannot change the object itself through a link, but that the link cannot suddenly start pointing to another object along the way.
C ++ does not allow you to change the value of the reference itself, and not the object it points to, in any way. A reference, unlike a pointer, cannot first point to object a
, and then suddenly to object b
. Only to one and the same object – the one with which it is initialized – all the time of its existence.
Is that clearer?
Yes, the phrase is translated somewhat ambiguously, I admit it …