Фактически, то, что вы можете передать методу, это указатель на объект, ссылка на объект и копия объекта, и все они также могут быть постоянными.В зависимости от ваших потребностей вы должны выбрать тот, который наилучшим образом соответствует вашим потребностям.
Первое, что вы можете сделать, - это то, должна ли вещь, которую вы передаете, изменить в вашем методе или нет.Если вы не собираетесь изменять его, тогда ссылка на const, вероятно, лучшая альтернатива (не меняя, я также имею в виду, что вы не намереваетесь вызывать какие-либо неконстантные методы этого объекта).Каковы преимущества этого?Вы экономите время для составления объекта, а также сама подпись метода скажет: «Я не буду изменять этот параметр».
Если вам нужно изменить этот объект, вы можете передать на него либо ссылку, либо указатель.Не обязательно выбирать только один из этих вариантов, чтобы вы могли выбрать любой из них.Единственное различие, о котором я могу думать, состоит в том, что указатель может быть НЕДЕЙСТВИТЕЛЕН (то есть вообще не указывает на какой-либо объект), в то время как ссылка всегда указывает на существующий объект.
Если то, что вам нужно в вашем методе, является копиейвашего объекта, то, что вы должны передать копию объекта (не ссылка и не указатель).Например, если ваш метод выглядит как
void Foo(const A& a) {
A temp = a;
}
, то это явный признак того, что передача копии - лучшая альтернатива.
Надеюсь, это немного прояснит ситуацию.