C ++ «Лучший» метод передачи параметров

Сегодня я кодировал класс C ++ и написал функцию, которая принимает аргумент как ссылку, а не указатель, что я редко делаю. Я всегда проходил мимо указателей. Так что я собирался изменить это обратно, но потом я понял - понятия не имею, должен ли я, или это вообще имеет значение.

Итак, я обращаюсь к вам, ребята. У меня есть три способа передачи параметров:

//1: By pointer
Object* foo(Object* bar) {...}

//2: By reference
Object& foo(Object& bar) {...}

//3: By value (just for completeness)
Object foo(Object bar) {...}

Если предположить, что № 3 отсутствует по соображениям производительности (да, я знаю, что компиляторы неплохо справились с этим, но все же), два других более или менее эквивалентны.

Итак: Какой "лучший" метод? Указатели? Использованная литература? Какая-то комбинация двух? Или это вообще имеет значение? Технические причины являются лучшими, но стилистические причины не менее хороши.

Обновление: Я принял ответ ЙенФей, поскольку он касается разницы, которая решила для меня (даже если я тогда демонстративно проигнорировал его совет - Мне нравится иметь NULL в качестве опции ...). Но все высказали хорошие замечания, особенно GMan (в комментариях) и Nemo, в ответах, касающихся производительности и передачи по значению. Если вы здесь, чтобы получить ответы, проверьте их все!

7
задан Lightness Races with Monica 26 September 2011 в 17:06
поделиться