![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Есть класс вектора. И есть второй класс, который совершает операции над векторами. Есть его некая функций:
Правильно ли я понимаю что на строке "return vec+vec2" будет создан новый объект типа aVector, который будет результатом сложения; после чего будет создан объект aVector - возвращаемый функцией Func(), и который приравняется вектору, который будет результатом сложения? Т.е. в итоге будет создано два объекта, первый из которых после приравнивания будет уничтожен(является результатом сложения), а второй - тот к которому приравняется r. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Напиши свой конструктор копирования и сделай в нём вывод в консоль. Сам увидишь сколько фактически будет создано копий. Теоретически ты прав, будет создано минимум 2 копии. На практике же, в release, компилятор проведёт оптимизацию возвращаемых значений и число копирований здесь уменьшится до одного. Ещё можно сделать методы inline (точнее __inline и в опциях компилятора поставить /Ob1).
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
И в r у тебя мусор будет (в Debug версии)
Это сообщение отредактировал(а) Annihilator - 24.9.2009, 07:19 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Нет там мусора - проверил. С чего вы взяли? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Имеется ввиду после объявления объекта наверное. Обычно в debug сборке там мусор. А после присваивания значения уже то, что надо.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
во первых, зачем оператор сложения возвращает const aVector, а не просто aVector? во вторых, современные компиляторы умеют это оптимизировать, лишняя копия создана не будет, это называется copy elision |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Lazin, Вопрос к спецификации вообщем-то, а не к реализации на компиляторах. Но - спасибо.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 2 Всего: 23 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Всем спасибо за ответы. Давайте без оффтопа
solved -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |