Not strictly related to the question but ...
Be careful about
void printDad(Person p)
It actually doesn't refer to the person you mean, but to a copy of it.
That -because of how C++ default copy constructor works- has the same members values (hence point to the same mom and dad) and hence incidentally will work the same, but it is actually a "temporary brother".
Pass a pointer or a reference, not a value.
Also, learn to use
const
for member function that don't modify the object, and
const&
for parameters. You'll avoid a lot useless copy.