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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Lawlliet
2 / 2 / 0
Регистрация: 25.03.2010
Сообщений: 145
#1

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

18.09.2012, 22:52. Просмотров 2461. Ответов 4
Метки нет (Все метки)

Как лучше передавать объекты в функции и методы и почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача объектов в функции и методы (C++):

Передача объектов в методы по указателю - C++
Здравствуйте. Тема звучит достаточно просто, но на самом деле я сформулировал её наверно недостаточно точно. Проще объяснить на примере. ...

Передача объектов функции. Два обращения к функции деструктора - C++
В книге этот код должен 2 раза обращаться к функции деструктора, то есть результатом программы должно быть: Создание 10 Разрушение ...

Передача объектов в функции - C++
Добрый день. После C изучал C#, теперь перешел к плюсам. Столкнулся с непониманием. В каких случаях следует передавать объект в...

Передача массива объектов функции - C++
Выбивает о каком-то недопустимом внешнем символе, подскажите что не так. Вот цикл, который прогоняет массив. user = new Students; ...

Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы - C++
Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы Abiturient:...

Передача указателей в методы по ссылке - C++
Здравствуйте, хотел спросить, такой варианте адекватен? Или есть более адекватное решение... Просто непривычно передавать в метод...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
18.09.2012, 23:01 #2
Смотря что и зачем надо передать.
Если с объектом внутри функции необходимо производить некоторые действия, то объект лучше передать по ссылке.
Если требуется передача копии объекта, то его передают по значению (вызывается конструктор копирования).
Если вызов конструктора копирования нежелателен (например, по соображениям эффективности), но никаких "модификаций" объекта внутри функции не требуется, можно передать объект по константной ссылке.
Если речь идёт о полиморфных классах, то функция, скорее всего, должна принимать указатель на базовый класс, а в неё передаются адреса объектов производных классов.

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

а передача указателя -- прежде всего для передачи массивов, так как в этом случае ссылкой никак не обойтись
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
19.09.2012, 09:16 #5
yekka, Не согласен насчет никак не обойтись.

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

А при использовании смартов - вообще будем кидать просто массив смартов, без явного использования указателей. Ну или вектор.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 09:16
Привет! Вот еще темы с ответами:

Как правильно вызвать методы, чтобы передать весь массив объектов - C++
#include <iostream> using namespace std; class f { public: int a; f() { a = 0;

Передача объектов функциям - C++
Задание: "Переделать свою задачу из лабораторной N, сделав функции не частью класса, а внешними, использующими объекты в качестве...

Передача объектов в аргументы метода - C++
Есть программа. Мне нужно было написать несколько перегруженных операторов. Вот собственно весь код: class String{ char *str; ...

Передача объектов в функцию: особенности - C++
Здравствуйте! Пишу программу с применением классов, и возник один вопрос, на который то ли гугл не имеет ответа, то ли я плохо искал, но, в...


Искать еще темы с ответами

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru