Форум программистов, компьютерный форум CyberForum.ru

передача объектов в функции и методы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
18.09.2012, 22:52     передача объектов в функции и методы #1
Как лучше передавать объекты в функции и методы и почему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
18.09.2012, 23:01     передача объектов в функции и методы #2
Смотря что и зачем надо передать.
Если с объектом внутри функции необходимо производить некоторые действия, то объект лучше передать по ссылке.
Если требуется передача копии объекта, то его передают по значению (вызывается конструктор копирования).
Если вызов конструктора копирования нежелателен (например, по соображениям эффективности), но никаких "модификаций" объекта внутри функции не требуется, можно передать объект по константной ссылке.
Если речь идёт о полиморфных классах, то функция, скорее всего, должна принимать указатель на базовый класс, а в неё передаются адреса объектов производных классов.

В общем, много-много "если". Каждой конкретной ситауции - своё решение.
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
18.09.2012, 23:04  [ТС]     передача объектов в функции и методы #3
короче говоря,зависит от ситуации. Спасибо
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
18.09.2012, 23:05     передача объектов в функции и методы #4
Цитата Сообщение от John Prick Посмотреть сообщение
Если речь идёт о полиморфных классах, то функция, скорее всего, должна принимать указатель на базовый класс, а в неё передаются объекты производных классов.
константная ссылка здесь тоже вполне пригодна.

а передача указателя -- прежде всего для передачи массивов, так как в этом случае ссылкой никак не обойтись
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.09.2012, 09:16     передача объектов в функции и методы #5
yekka, Не согласен насчет никак не обойтись.

http://liveworkspace.org/code/0240f4...c4a3fb49ff9e21

А при использовании смартов - вообще будем кидать просто массив смартов, без явного использования указателей. Ну или вектор.
Yandex
Объявления
19.09.2012, 09:16     передача объектов в функции и методы
Ответ Создать тему
Опции темы

Текущее время: 02:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru