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

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

07.12.2012, 19:59. Показов 4378. Ответов 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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
07.12.2012, 20:45
Цитата Сообщение от koderman Посмотреть сообщение
Объект Frisky
ну а где конструктор описывается в классе ?
уж не в public ли?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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 / 1796 / 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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 / 1796 / 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 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
05.01.2013, 18:49
Цитата Сообщение от koderman Посмотреть сообщение
Кстати опечаток в ней я ещё не находил. Хотя это перевод.
Не показатель, в место них там грубые ошибки.

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

Добавлено через 3 минуты
Цитата Сообщение от koderman Посмотреть сообщение
Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и стандартный деструктор будет работать корректно, отнюдь не повредит объявить собственный. Это делает программу более ясной.
Совсем другое дело. И
Объявив конструктор, необходимо объявить и деструктор.
В первом случае речь о стиле, во втором об обязательном синтаксисе.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru