Передача модифицируемого параметра в функцию c ++ - PullRequest
7 голосов
/ 24 августа 2009

При условии, что я хочу передать изменяемый параметр в функцию, что мне выбрать: передать его по указателю или передать по ссылке?

  1. bool GetFoo (Foo & whereToPlaceResult);
  2. bool GetFoo (Foo * whereToPlaceResult);

Я спрашиваю об этом, потому что я всегда считал, что лучше всего передавать параметр по ссылке (1), но после изучения некоторой локальной базы данных кода я пришел к выводу, что наиболее распространенным является (2). Более того, сам человек (Бьярне Страуструп) рекомендует использовать (2). В чем заключаются преимущества (1) и (2) или это просто вопрос личного вкуса?

Ответы [ 12 ]

0 голосов
/ 24 августа 2009

Разница здесь относительно незначительная.

Ссылка не может быть NULL.

Может быть передан нулевой указатель. Таким образом, вы можете проверить, происходит ли это, и реагировать соответствующим образом.

Лично я не могу думать о реальном преимуществе одной из двух возможностей.

0 голосов
/ 24 августа 2009

Кажется, я вспоминаю, что в c ++ есть ссылки, где могут быть не null и указатели Я давно не занимался с ++, поэтому моя память может быть ржавой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...