I came across people passing data objects as:
declaration:
DataObject * data = 0;
calling it as:
SomeMethod( data );
definition of Somethod:
void SomeMethod(SomeObject * & object)
My obvious question is, when and why do you have to do this (& *)?
Is it passing the pointer as reference?
Yes, exactly!
So, not only can your function
SomeMethodrefer to the samedataas the caller, but it can actually change what the caller points to!