|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.05.2012, 11:43 | #1 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Перегрузка операции +
Всем привет!
Ребята, обясните, пжлста, почему конструктор вызывается дважды. Код:
Заранее спасибо!
Желание тысяча возможностей, нежелание - тысяча причин
Последний раз редактировалось Стремящийся; 06.05.2012 в 11:45. Причина: Не выделяется код |
06.05.2012, 13:47 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
h какого типа? Rational?
Если мне не изменяет память "=" для объектов вызывает конструктор.
I'm learning to live...
|
06.05.2012, 14:39 | #3 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Спасибо. Да, Вы правы, h типа Rational. А вот когда пишешь
Код:
Желание тысяча возможностей, нежелание - тысяча причин
|
06.05.2012, 14:58 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
У меня вопрос: Почему создаешь объекты без использования new?
Я как-то не представляю программирование под ООП в Си без этого оператора. Т.е. не представляю себе как это - нет new и нет багов...
I'm learning to live...
|
06.05.2012, 15:12 | #5 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Я new никогда неиспользовал при создании. Наверно, привычка.
Динамически это так?: Код:
Желание тысяча возможностей, нежелание - тысяча причин
|
06.05.2012, 15:33 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да. Если в этой теме появятся мастера Си пусть пояснят в чем разница создания объекта и его "статической" описи.
I'm learning to live...
|
06.05.2012, 15:35 | #7 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Спасибо. Будем ждать!
Желание тысяча возможностей, нежелание - тысяча причин
|
06.05.2012, 16:15 | #8 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Если объекты динамически не нужны, то лучше их так и не создавать, будет только медленнее, и, к тому же, захламлять память.
Цитата:
new и delete нужны только когда вы вручную работаете с памятью, что, как правило, и приводит к тысячам ошибок) Как правило, всё нужное вам уже написано. А во второй строчке конструктор для h не вызывается. Он вызывается для временного объекта - результата суммы, а потом уже вызывается operator =.
Форматируйте код, будьте людьми.
Последний раз редактировалось Granus; 06.05.2012 в 16:18. |
|
06.05.2012, 19:17 | #9 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Создание объекта с использованием new подразумевает размещение объекта в динамической памяти (куче), и позволяет вручную контролировать время жизни. Когда объект не нужен используется detete.
Статическое создание объекта (без использования new) подразумевает размещение объекта в стеке, и автоматическое удаление его при выходе переменной из области видимости. Как правило, локальные объекты создаются статически, ибо нет никаких причин размещать их в куче. Но есть случаи, когда создание объектов статически невозможно. Например, если у вас есть абстрактный базовый класс (интерфейс), и несколько производных классов: Код:
Код:
Код:
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
06.05.2012, 19:26 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Понятно. Попробую избавиться от привычки везде new пхать.
P.S. Сорри что влез в чужую тему.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операции * | Maygli | Помощь студентам | 0 | 25.04.2012 13:33 |
Перегрузка операции ввода | sawyer1988 | Общие вопросы C/C++ | 5 | 22.04.2012 11:59 |
Перегрузка операции | Evgen.O | C++ Builder | 0 | 11.12.2011 17:42 |
перегрузка операции со счетом | zhenya.ya | Общие вопросы C/C++ | 0 | 03.10.2010 23:52 |
Перегрузка операции "->*" C++ | Geg[C/c++] | Общие вопросы C/C++ | 3 | 15.12.2009 12:49 |