If you are just passing an object, using a reference is better in terms of readability. As from the perspective of efficiency, both are the same.

However, if you need to pass a pointer to an array of object, there is no choice but to use a pointer. This is because the address stored by the reference cannot be modified once after initialization.