LINUX.ORG.RU
> в каких случаях есть резон передавать объекты по значению функциям

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

asgard
()
Если сомневаешься - передавай по ссылке (вщзможно, const).
tailgunner ★★★★★
()
Похоже, смысла особого в этом действительно нет за исключением по крайней мере одного случая - если копирующий конструктор объекта модифицирует свой аргумент. Это редко бывает, обычно копирующие конструкторы имеют сигнатуру A::A(const A&), но исключения вида A::A(A&) бывают.

Ну вот к примеру - если взять boost::shared_ptr. Передавать его в функцию как const& - не годится, поскольку при копировании он должен увеличить счетчик ссылок.

anonymous
()
Ответ на: комментарий от anonymous
ну если объект не больше 8-16 байт и у него тривиальный конструктор коирования, то передать по значению будет скорее вскего эффективнее, потому что по ссылке -- будет доступ с косвенной адресацией
dilmah ★★★★★
()
Ответ на: комментарий от dilmah
>у если объект не больше 8-16 байт и у него тривиальный конструктор коирования, то передать по значению будет скорее вскего эффективнее, потому что по ссылке -- будет доступ с косвенной адресацией

и что при разработке програмных комплексов руководствуются таким правилом?
anonymous
()
Ответ на: комментарий от anonymous
РуководствуютсяЮ особенно если много раз и это основное, что делает программа.
yz
()
Ответ на: комментарий от anonymous
> shared_ptr... Передавать его в функцию как const& - не годится, 
> поскольку при копировании он должен увеличить счетчик ссылок.

В передаче shared_ptr по ссылке нет ничего криминального,
да копирование не происходит, но может оно и не требуется. В данном
случае shared_ptr надо рассматривать как некоторые абстрактный 
пользовательский тип, для которого справедливы следующие принципы:

- Если объект никогда не изменяется, то передовать его надо по
константной ссылке;
- Если объект изменяется, то объект передается по ссылке;
- Если требуется копия объекта, то передовать надо по значению.

aton
()
Ответ на: комментарий от aton
> В передаче shared_ptr по ссылке нет ничего криминального,
> да копирование не происходит, но может оно и не требуется.
Я бы сказал
"... да копирования не происходит, но оно здесь лишено смысла."

А анонимус написал бессмыслицу.
gpg
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.