In this case it would work either way, however in a generic case it might not. A reference is just like a pointer - it points to the actual place in memory where the variable is stored. So in the constructor parameter you want to pass a reference, not make a copy of the variable. However, if you stored a reference in the class and somehow the object whose position is stored got removed (consider a `DoWithPlayer()` callback and the player disconnecting), the position would point to the no-longer existing `cPlayer` object. Accessing it would cause a server crash or, worse, garbage data being read silently.