こういった解釈でよろしいでしょうか?

void hoge( int* foo ); // ・・・�@
void hoge( int& foo ); // ・・・�A

�@も�Aもできることに違いはない
(ここではint だが, 関数内でクラス内のものを変更すれば
呼び出し元でもその変更の影響を受ける)が、
�@ではそのポインタを渡し、�Aでは実体そのものを渡している。と。