Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 23:09   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Радость Использование знака "+="

Здравсвуйте програмисты! Скажите, пожалуйста,почему в этой функции используется знак "+="? И обязательно перед объявлением этой функции должен быть прототип
void add_dist(Distance,Distance); И ещё, правильно ли я понял значение прототипа:"функция,которая принимает 2 параметра типа класса".
Код:
void Distance::add_dist(Distance d2, Distance d3) 
{
inches = d2.inches + d3.inches;
feet = 0;
if(inches>=12.0)
{
inches = 12;
feet++;
}
feet+=d2.feet + d3.feet;
}

Последний раз редактировалось prikolist; 05.05.2009 в 23:16.
prikolist вне форума Ответить с цитированием
Старый 05.05.2009, 23:13   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Потому что кто-то не захотел писать:
feet = feet + d2.feet + d3.feet;
и написал:
feet+=d2.feet + d3.feet;
pu4koff вне форума Ответить с цитированием
Старый 05.05.2009, 23:17   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Скажите, пожалуйста,почему в этой функции используется знак "+="?
Выражение
Код:
A += B
эквивалентно
Код:
A = A + B
Складываются два экземпляра класса. Видимо, для этого класса оператор "+=" перегружен.
Цитата:
И обязательно перед объявлением этой функции должен быть прототип
void add_dist(Distance,Distance);
Если вы описываете функцию вне класса, то внутри класса нужно указать ее прототип.
Можно описать функцию прямо в классе.
Цитата:
И ещё, правильно ли я понял значение прототипа:"функция,которая принимает 2 параметра типа класса"
Да.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 23:36   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Выражение
Код:
A += B
эквивалентно
Код:
A = A + B
Не очень эквивалентно, по-моему. Даже если считать, что оба будут для сложения, в первом случае просто выполняется 1 оператор, а во втором уже + с созданием временного объекта, потом =.
Somebody вне форума Ответить с цитированием
Старый 05.05.2009, 23:45   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Somebody
Не очень эквивалентно, по-моему. Даже если считать, что оба будут для сложения, в первом случае просто выполняется 1 оператор, а во втором уже + с созданием временного объекта, потом =.
Ну да. Но это детали )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 23:48   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Не очень эквивалентно, по-моему. Даже если считать, что оба будут для сложения, в первом случае просто выполняется 1 оператор, а во втором уже + с созданием временного объекта, потом =.
Если так глубоко копать, то нет уверенности, что тип параметра оператора += Distance, а не какой-то другой. Иначе неявные преобразования могут сотворить чудеса и тут так же создастся временный объект.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование "" и <> в #include happy_horror Общие вопросы C/C++ 2 03.03.2009 21:52
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
использование "mod" Troll666 Помощь студентам 4 22.04.2008 23:42