|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
Вопрос про конструктор класса по умолчанию29.10.2011, 18:32. Показов 6217. Ответов 50
Метки нет (Все метки)
http://s2.ipicture.ru/uploads/... AtbNYV.jpg
Пункт первый не могу немного понять.Т.е получается,что всегда лучше создавать самому конструктор класса ? Не по теме: Ппц,как так можно книги выпускать.Сплошные опечатки,пропуски букв,не полный перевод комментариев...
0
|
|
| 29.10.2011, 18:32 | |
|
Ответы с готовыми решениями:
50
Конструктор класса не видит конструктор по умолчанию другого класса Для класса не существует конструктор по умолчанию
|
|
Заблокирован
|
||
| 29.10.2011, 18:36 | ||
|
Конструктор по умолчанию, создаваемый компилятором, соответсвует конструктор, который бы вы сами написали, и у которого не будет списка инициализации и будет пустое тело.
1
|
||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 29.10.2011, 18:41 [ТС] | |
|
Просто по примеру ,мне кажется ,что неопределенный конструктор может привести к крашу программы
0
|
|
|
Заблокирован
|
||
| 29.10.2011, 18:47 | ||
|
1
|
||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 29.10.2011, 18:53 [ТС] | |
|
Например,неинициализированная целая переменная может содержать -858993460,что в большинстве будет программ,будет ,вероятно недопустимым значением для данной переменной .
Как вот это понимать и как это повлияет на работу программы?
0
|
|
|
Заблокирован
|
||
| 29.10.2011, 18:57 | ||
|
1
|
||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 29.10.2011, 19:03 [ТС] | |
|
Сыроежка, Контруктор,как я понял из книги позволяет при объявлении переменной класса задать ей значения при ее объявлении,а если допустим я не хочу задавать ей значения при объявлении.По влияет ли в таком случае этот конструктор по умолчанию на работу программы?
Если я не объявлю конструктор сам,а потом попытаюсь присвоить переменной класса значение,то произойдет ошибка?
0
|
|
|
Заблокирован
|
||||||||||||
| 29.10.2011, 19:27 | ||||||||||||
|
Это совершенно не означает, что конструктор по умолчанию не может иметь параметров. Но это означает, если у конструктора есть параметры, то, чтобы он был конструктором по умолчанию, все его параметры должны иметь аргументы по умолчанию. Компилятор неявног создает конструктор по умолчанию без параметров, а это означает, что никакое значение при создании объекта класса не передается. Вы не можете создать объект, передав ему значение. Рассмотрим простой пример.
Поэтому мы можем создать объекты первым и вторым способом, задав конкретное значение взамен значения по умолчанию. Ежели мы сами не определим конструктор для этого класса, то компилятор его определит за нас со следующим определением
1
|
||||||||||||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 29.10.2011, 19:51 [ТС] | |
|
Сыроежка, ну в это я въехал.
Я просто вот это замечание из книги к первому пункту немного не понимаю: Неиницированная переменная обычно содержит значение -"мусор" Например,неинициализированная целая переменная может содержать -858993460,что в большинстве программ будет ,вероятно недопустимым значением для данной переменной . Вот это относится к ситуации,когда я попытаюсь ,не объявив конструктор самостоятельно,задать значение переменной класса при создании ?
0
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|||||||
| 29.10.2011, 20:13 | |||||||
0
|
|||||||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 30.10.2011, 13:41 [ТС] | |
|
Что вообще называется неиницированной переменной и как она связана с конструктором по умолчанию ?
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 30.10.2011, 16:07 | ||||||
|
iluxa1810, Неинициализированной... Любая переменная, которая не инициализирована. У POD типов нету конструкторов, т.к. они не являются классами. Поэтому
1
|
||||||
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
| 30.10.2011, 16:15 [ТС] | |
|
Т.е получается,что в только что объявленный переменных переменных лежат случайные значения?
Понятно,спс.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 30.10.2011, 16:17 | |
|
iluxa1810, В только что объявленных переменных ПОД типов. Или же если переменная - объект класса, а в нем есть под-типы, но нет конструктора по умолчанию.
0
|
|
|
Заблокирован
|
|||||||
| 30.10.2011, 16:22 | |||||||
Мораль: не хотите проблем, и быдлокода на с++, пишите в рамках парадигмы с++, а не сишного суржика. Каноническая форма записи класса: всегда есть конструктор по умолчанию, копирующий, деструктор, безопасный метод clear();
0
|
|||||||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 30.10.2011, 16:25 | |
|
Bers
Это я знаю.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 30.10.2011, 16:29 | ||||||
|
Bers, Не скажу, что ущербна.
Все же не спроста списки инициализации придумали.
0
|
||||||
|
Заблокирован
|
|
| 30.10.2011, 16:36 | |
|
ForEveR, не компилируется по двум причинам:
1. В моей старенькой студии отсутствует #include <initializer_list> 2. error C2552: c: инициализация не агрегированных данных с помощью списка инициализации не допускается Попытка инициализации приватных членов. Я не могу точно сказать как происходит инициализация в приведенном вами коде, но подозреваю, что такое не по стандарту. Элементарно, снаружи класса нет доступа к приватным членам. Ага.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 30.10.2011, 16:39 | |
|
Bers, http://liveworkspace.org/code/... d0707f53e2
1. Код абсолютно корректен и компилируется. 2. Код полностью соответствует текущему стандарту языка.
0
|
|
|
Заблокирован
|
||
| 30.10.2011, 16:41 | ||
|
Нарушение инкапсуляции?
0
|
||
| 30.10.2011, 16:41 | |
|
Помогаю со студенческими работами здесь
20
Вопрос про конструктор Cделать конструктор по умолчанию и копирования для класса Вопрос про конструктор и инициализвцию Конструктор класса по умолчанию: код компилируется, хотя по идее не должен
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|