![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Всем привет!
Ребята, обясните, пжлста, почему конструктор вызывается дважды. Код:
Заранее спасибо!
Желание тысяча возможностей, нежелание - тысяча причин
Последний раз редактировалось Стремящийся; 06.05.2012 в 11:45. Причина: Не выделяется код |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
h какого типа? Rational?
Если мне не изменяет память "=" для объектов вызывает конструктор.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Спасибо. Да, Вы правы, h типа Rational. А вот когда пишешь
Код:
Желание тысяча возможностей, нежелание - тысяча причин
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
У меня вопрос: Почему создаешь объекты без использования new?
Я как-то не представляю программирование под ООП в Си без этого оператора. Т.е. не представляю себе как это - нет new и нет багов...
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Я new никогда неиспользовал при создании. Наверно, привычка.
Динамически это так?: Код:
Желание тысяча возможностей, нежелание - тысяча причин
|
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Да. Если в этой теме появятся мастера Си пусть пояснят в чем разница создания объекта и его "статической" описи.
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Спасибо. Будем ждать!
Желание тысяча возможностей, нежелание - тысяча причин
|
![]() |
![]() |
![]() |
#8 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
![]()
Если объекты динамически не нужны, то лучше их так и не создавать, будет только медленнее, и, к тому же, захламлять память.
Цитата:
new и delete нужны только когда вы вручную работаете с памятью, что, как правило, и приводит к тысячам ошибок) Как правило, всё нужное вам уже написано. А во второй строчке конструктор для h не вызывается. Он вызывается для временного объекта - результата суммы, а потом уже вызывается operator =.
Форматируйте код, будьте людьми.
Последний раз редактировалось Granus; 06.05.2012 в 16:18. |
|
![]() |
![]() |
![]() |
#9 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]()
Создание объекта с использованием new подразумевает размещение объекта в динамической памяти (куче), и позволяет вручную контролировать время жизни. Когда объект не нужен используется detete.
Статическое создание объекта (без использования new) подразумевает размещение объекта в стеке, и автоматическое удаление его при выходе переменной из области видимости. Как правило, локальные объекты создаются статически, ибо нет никаких причин размещать их в куче. Но есть случаи, когда создание объектов статически невозможно. Например, если у вас есть абстрактный базовый класс (интерфейс), и несколько производных классов: Код:
Код:
Код:
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
![]() |
![]() |
![]() |
#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 |