![]() |
|
Модераторы: bsa |
![]()
|
|
| GLeBaTi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 1.2.2008 Где: г.Чебоксары Репутация: -1 Всего: 0 |
я уже много раз встречал термин "конструктор", я знаю где и как его писать, но никак не могу понять его предназначение.
Зачем он нужен вообще ? |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Инициализация. Когда ты создаешь объект, для него вызывается "конструктор". |
|||
|
||||
| GLeBaTi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 1.2.2008 Где: г.Чебоксары Репутация: -1 Всего: 0 |
Значит если создаешь объект, то обязательно надо создать конструктор ?
А если не зоздать, что будет ? |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Будет вызван конструктор по-умолчанию, который не делает ничего. |
|||
|
||||
| GLeBaTi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 1.2.2008 Где: г.Чебоксары Репутация: -1 Всего: 0 |
Значит при каждом обращении к объекту, вызывается его конструктор или только один раз ?
заранее спасибо за ответ! |
|||
|
||||
| Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: нет Всего: 30 |
Не ну почему же, он делает чтото, вот ток надо глянуть в конструкторе этого класса что он делает -------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
||||
|
||||
| new_web |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Ну, почему-же? Любой конструктор ,что-то да и делает - выделяет память для переменных, может их инициализировать началными значениями, договаривается с виндовс
если в unit.h
то в unit.срр
Полезно там инициализировать разные данные. данные - типа:"по-умолчанию" Так класс отвечает сам за инициализуцию своих параметов, не полагаясь на стооннюю функцию, в наше время никому верить нельзя! Для каждого объекта любого класса создаётся только один контруктор, и один деструктор - который освобождает память, уничтожает ПЕРЕМЕННЫЕ, И ТАК ДАЛЕЕ деструктор в действии можно увидеть:
Это сообщение отредактировал(а) new_web - 1.2.2008, 22:35 |
||||||
|
|||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Ну, если по-хорошему, то конструктор по-умолчанию не выделяет никому память и не задаёт никому значения. Всё, что он делает - это вызывает конструкторы по-умолчанию членов класса/структуры.
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Эт чего он должен выделять? Если объект стековый, память резервируется при входе в функцию. Но о выделении речи здесь нет - просто компилятор должен знать размер объекта (скока выделять под фрейм локальных переменных). Странная формулировка - может так, может не так... Но доля истины есть А о чём он должен с ней договариваться? Конструктор по умолчанию формально всё, что делает - вызывает дефолтный конструктор классов предков и конструкторы всех полей, не являющихся встроенными типами. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Ничего не делает только тривиальный конструктор. Да нет, выделять память под объект - это не в компетенции конструктора. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
PS А вообще по таким вопросам -
|
|||
|
||||
| GLeBaTi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 1.2.2008 Где: г.Чебоксары Репутация: -1 Всего: 0 |
Всё, я понял, спасибо
можете удалять тему |
|||
|
||||
| new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Да, конечно, и я прошу прощение, что возможно ввёл кого-то в заблуждение! НО. так или иначе конструктор объявляет всей видимости, что надо выделить память под переменную некотороего типа. Кто там куда чего где выделяет - это уже другой вопрос. Ну, а "договор с виндовс" можно увидеть если в пошаговом режиме зайти в функцию, ...там столько всего...непонятного...но понимаю. что програму открывает и показывает и закрывает виндовс... вся эта работа для програмиста сделана уже, согласно концепции ООП... Создатели уже побеспокоились о том как заставить виндовс показать окно...было бы что в нём показывать... |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Этим занимается не конструктор(если вообще кто-либо занимается Скомпилируй код, что я выше привёл и зайди в ctor в пошаговом режиме - ничего непонятного ты не увидишь. Если бы на каждый объект программа "договаривалась бы с виндовс", то они бы точно не договорились бы... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |