Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131

Конструкторы и деструкторы

07.12.2012, 19:59. Показов 5136. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прочитал про конструкторы и деструкторы. Пишут что они нужны для инициализации переменных класса. Как они используются я понял, но не понял зачем это нужно. Вместо конструктора можно ведь придумать любую другую функцию и она тоже самое будет делать?
Между строк 59 и 63 я не вижу деструктора.
В строке 8 создаётся конструктор, в строках 18-20 происходит определение конструктора, в строке 58 применяется данный конструктор. Эти строки ведь можно заменить любой другой функцией?

Извиняюсь. Конструкторы служат для создания и инициализации ОБЪЕКТОВ класса.
Миниатюры
Конструкторы и деструкторы   Конструкторы и деструкторы  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2012, 19:59
Ответы с готовыми решениями:

Конструкторы и деструкторы
Привет. Есть структура, содержащая 7 полей, в которые я ввожу значения с клавиатуры. Нужно используя конструкторы и деструкторы...

Конструкторы и деструкторы
Создать класс LongLong для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long — старшая часть, unsigned...

Конструкторы и деструкторы
Не понимаю, как закончить программу. Написала конструктор и деструктор, хотя он тут и не нужен по идее. Но по заданию сделала. А как...

40
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
07.12.2012, 20:42  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


Вы просто не внимательно на код смотрели :) в книге по другому


Инициализация, присваивание и уничтожение класса
Объект Frisky

Ок. понятно.
Миниатюры
Конструкторы и деструкторы  
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
07.12.2012, 20:45
Цитата Сообщение от koderman Посмотреть сообщение
Объект Frisky
ну а где конструктор описывается в классе ?
уж не в public ли?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
07.12.2012, 20:45

Не по теме:

Цитата Сообщение от koderman Посмотреть сообщение
Объект Frisky
Я Вам про Фому, Вы мне про Ерему:)


Почитайте еще раз про конструкторы с деструкторами - чем дальше будете заходить, тем больше будете понимать зачем они нужны.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.12.2012, 21:41
Цитата Сообщение от sovaz1997 Посмотреть сообщение
КОНСТРУКТОР (именно он) выделяет память под объект!!!
конструктор ничего не выделят, он только инициализирует
0
07.12.2012, 21:48

Не по теме:

КОНСТРУКТОР (именно он) выделяет память под объект!!!
такого я еще не слышал :facepalm:

0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.12.2012, 21:54
конструктор не занимается распределением памяти, его функция - выполнение кода инициализации
0
07.12.2012, 21:56

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
конструктор не занимается распределением памяти, его функция - выполнение кода инициализации
Согласен, не корректно получилось. Вы еще, наверное, первый вариант не видели. С Вами абсолютно согласен, прост еще не от кого не доводилось слышать, что конструктор выделяет память под объект.

0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:00  [ТС]
Ну блин ёмаё. Приложил скрин на котором ответ который я хотел узнать в этой теме. Вы вопрос не могли понять или что? Потому что со мной часто так бывает что сам ответы на вопросы нахожу потому что люди просто мой вопрос понять не могут. Конструктор Нужен просто для того чтобы переменные класса не остались без параметров. Вуаля, вот и всё что я хотел узнать. Так и спросил: для чего нужны конструкторы. Но всёравно спасибо за дискуссию, новое я из неё тоже узнал. В прошлый раз видать или не понял главу или не допонял. Кароче второй раз прочитал. Хорошая книга всётаки: Книга: Освой самостоятельно C++ за 24 часа
Автор: Либерти, Джесс, Хорват, Дэвид
Миниатюры
Конструкторы и деструкторы  
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.01.2013, 18:07
Цитата Сообщение от koderman Посмотреть сообщение
Как они используются я понял, но не понял зачем это нужно. Вместо конструктора можно ведь придумать любую другую функцию и она тоже самое будет делать?
Другую функцию надо будет явно вызывать, о чём в большой программе можно забыть, а конструктор - это функция, вызываемая автоматически при создании любого объекта. А если ещё объект создаёт не автор класса, то он может вообще не знать, какую функцию надо вызывать, пришлось бы к каждому классу писать инструкцию, в которой указывать, что надо вызвать при инициализации экземпляра. А конструктор вызывается автоматически, но это тоже просто инициализирующая функция. Это просто такой синтаксис, чтоб гарантировать, что функция инициализации экземпляра будет вызвана для всех экземпляров.
Цитата Сообщение от koderman Посмотреть сообщение
Между строк 59 и 63 я не вижу деструктора.
Явный деструктор нужен далеко не всегда.
1
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:13  [ТС]
В книге написано: Объявив конструктор, необходимо объявить и деструктор.
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
05.01.2013, 18:19
Цитата Сообщение от koderman Посмотреть сообщение
Объект я создам например так без всякого конструктора
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class soldier
{
public:
  int x,y;
  int ammo;
};
 
 int main
 
{
 
soldier OBJEKT;
 
};
Правильно. Создашь объект без всякого конструктора. Интересно, а что будет записано в переменные x, y и ammo после такого создания? Непонятно что)
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
05.01.2013, 18:24
Цитата Сообщение от koderman Посмотреть сообщение
Вы вопрос не могли понять или что? Потому что со мной часто так бывает что сам ответы на вопросы нахожу потому что люди просто мой вопрос понять не могут. Конструктор Нужен просто для того чтобы переменные класса не остались без параметров. Вуаля, вот и всё что я хотел узнать. Так и спросил: для чего нужны конструкторы.
Так Вам же ответили:
Цитата Сообщение от Jupiter Посмотреть сообщение
конструктор не занимается распределением памяти, его функция - выполнение кода инициализации
Цитата Сообщение от Jupiter Посмотреть сообщение
конструктор ничего не выделят, он только инициализирует
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Конструктор - это член класса, который используется для создания объектов класса. Конструктор имеет такое же название как и класс, но не имеет возвращаемого значения.
Цитата Сообщение от koderman Посмотреть сообщение
Хорошая книга всётаки: Книга: Освой самостоятельно C++ за 24 часа
Имхо, бред, а не книга.
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:32  [ТС]
Помоему будет вызван конструктор по умолчанию, тоесть без инициализации этих переменных(x, y и ammo). Если хотите эти переменные инициализировать в классе, то вам надо создать конструктор.


Насчёт деструктора нашёл.:

Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и стандартный деструктор будет работать корректно, отнюдь не повредит объявить собственный. Это делает программу более ясной.

Добавлено через 2 минуты
Croessmah, вы цитируете Юпитера и поэтому решили что моя книга- бред???

Добавлено через 4 минуты
Croessmah, так вот я как раз и не мог понять зачем надо использовать этот конструктор только для инициализации. Понимаете? Придумывать новое понятие как класс только для того чтобы инициализировать.. Я этот ответ искал:

Конструктор нужен чтобы переменные объекта никогда не остались без параметров.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
05.01.2013, 18:33
Цитата Сообщение от koderman Посмотреть сообщение
Croessmah, вы цитируете Юпитера и поэтому решили что моя книга- бред???
Я читал эту книгу. В моем понимании она на первом месте в списке самых идиотских книг по C++

Добавлено через 50 секунд
Цитата Сообщение от koderman Посмотреть сообщение
Конструктор нужен чтобы переменные объекта никогда не остались без параметров.
То есть для инициализации объекта
1
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:34  [ТС]
Ну видать у меня понимание на таком уровне, потому что никакие другие книги я не понимаю. Абракадабра какаято везде.
Кстати опечаток в ней я ещё не находил. Хотя это перевод.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.01.2013, 18:36
Цитата Сообщение от koderman Посмотреть сообщение
В книге написано: Объявив конструктор, необходимо объявить и деструктор.
Это где? В нормальных книгах пишут:
Деструктор может отсутствовать, тогда компилятор неявно создаст пустой деструктор.
.
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
05.01.2013, 18:37  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Это где? В нормальных книгах пишут: .
На третьей странице я скрин выложил из книги.
Ну дальше я написал про деструктор.
Конструкторы и деструкторы
Сообщение 33
0
05.01.2013, 18:37

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Это где? В нормальных книгах пишут:
это на скриншоте

0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.01.2013, 18:49
Цитата Сообщение от koderman Посмотреть сообщение
Кстати опечаток в ней я ещё не находил. Хотя это перевод.
Не показатель, в место них там грубые ошибки.

Добавлено через 7 минут
Цитата Сообщение от koderman Посмотреть сообщение
Абракадабра какаято везде.
Как раз абрукадабру ты и читаешь. Взять хотябы
стандартный конструктор
. Стандартный - это который предписан стандартом и отступать от него нельзя, а в c++ в любом классе можно произвольно определить свой конструктор с любыми параметрами, или без них вообще, так что стандартных конструкторов как раз не бывает. default constructor, как было в оригинале, означает конструктор по умолчанию, то есть, если не написан другой. Вот оригинал как раз правильный.

Добавлено через 3 минуты
Цитата Сообщение от koderman Посмотреть сообщение
Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и стандартный деструктор будет работать корректно, отнюдь не повредит объявить собственный. Это делает программу более ясной.
Совсем другое дело. И
Объявив конструктор, необходимо объявить и деструктор.
В первом случае речь о стиле, во втором об обязательном синтаксисе.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
05.01.2013, 23:34
Цитата Сообщение от koderman Посмотреть сообщение
Пишут что они нужны для инициализации переменных класса. Как они используются я понял, но не понял зачем это нужно
Условно можешь считать, что конструктор - это функция, которая автоматически вызывается при создании объекта, а деструктор - это функция, которая вызывается при удалении объекта

Цитата Сообщение от koderman Посмотреть сообщение
Вместо конструктора можно ведь придумать любую другую функцию и она тоже самое будет делать?
Можно. С этой точки зрения конструктор не делает ничего такого, что нельзя было бы сделать из обычной функции. За исключением того, что поле класса, объявленное как const, можно инициализировать только в конструкторе. Конструктор и деструктор условно можно считать элементами удобства, но на такие вот удобства закладывается практически любая технология, работающая через шаблоны. Зачем нужен конструктор и чем он лучше явного вызова функции или метода, основываясь на теории ты никогда не поймёшь. Только на практике. Если будет не в облом, то попробуй любую программу реализовывать в двух вариантах - с конструкторами/деструкторами и без них. Со временем сам увидишь, который из вариантов более удобный и надёжный

Цитата Сообщение от koderman Посмотреть сообщение
Кстати опечаток в ней я ещё не находил
Степень идиотизма книги определяется качеством содержимого, а не количеством опечаток
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2013, 23:34

Конструкторы и деструкторы
Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать: Для инициализации...

Конструкторы и деструкторы
Помогите, пожалуйста, исправить программу и закончить ее как надо. Необходимо реализовать класс с двумя полями, имеющими имена first и...

Конструкторы и деструкторы
Помогите исправить программу. Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны...

Конструкторы и деструкторы
Код: #include <iostream> #include <stdlib.h> #include <conio.h> class complex { private: double im; double...

Конструкторы и деструкторы
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru