When pointers point to something declared in the same class, am I right in thinking that if you copy such an object that there are multiple sets of pointers but they all point to the same object(s)?
Does this mean there are other objects in the other class instances that have been created but that nothing is pointing to?
And as a side question, would I be right in thinking that a shared pointer would point all the classes at ONE set of objects but in a safe way?
yes – when you don’t define a copy constructor the compiler will issue one for you – which will do a shallow copy – just copy the values(i.e the address) of the pointers.
So the two objects(original and ‘copy’) will have pointer fields pointing at the same object.