It has nothing to do with mutability
string s = "lana del rey"
string d = s;
Here 2 variables s
and d
refer to the same object in memory.
s = "elvis presley";
here in the right part of the statement the new object is allocated and initialized with "elvis presley"
and assigned to s
. So now s
refers to another object. And while we haven't change the d
reference value - it continues referring to the "lana del rey"
as it originally did.
Now the real life analogy:
There are 2 people (A
and B
) pointing using their fingers to a building far away. They are independent to each other, and don't even see what another is pointing to. Then A
decides to start pointing to another building. As long as they aren't connected to each other - now A
points to another building, and B
continues pointing to the original building (since no one asked them to stop doing that)
PS: what you probably are confusing is the concept behind a pointer and a reference. Not sure if it makes sense to explain it here since you might be confused even more. But now at least you might google for the corresponding keywords.