#3
by Mits
то есть компилятор не сможет создать объект без конструктора, это как-бы необходимый шаг, даже если конструктор пустой
#4
by Rie
Если программист не определил конструктор в классе - то компилятор создаст конструктор (без параметров) для создания объектов этого класса. Но мне кажется, вопрос в чём-то другом?
#6
by Rie
А иначе возникнут проблемы с созданием class B { int i; } class D: B { int j; D { j=0; } } /* при создании D надо вызвать конструктор для B - а его нет */ class C { B x; C {} } /* x надо ведь как-то создать */ Но если программист определил свой конструктор - то будет использоваться тот, что определил программист.
#9
by Mikeware
Да, собственно, и программа на С++ нужна тоже компилятору. Если нет программы на С++ - нахрена тогда нужен компилятор? :-)
#10
by Rie
??? Вообще-то всё это нужно программисту. В том числе и конструктор по умолчанию. struct B { B { cout<<"Wow!"; } }; struct D: B { int i; }; int main { D x; }
#12
by Mits
Просто механизм конструктора по-умолчанию прозрачен для программиста, также как и кэш-память процессора.
#14
by Rie
Да нет. Надо знать этот механизм (а в C++ он не так уж и прост; впрочем, а что в C++ сделано просто?)
#15
by Mits
Сложность c++ в том, что этот язык дает полную свободу программисту и в тоже время это заставлет его делать все вручную. Хотя есть библиотеки STL и другие библиотеки.
#17
by Xapac
разрыв мозга просто. "я теперь понял, что они не пересекаются, но я не могу понять почему они не пересекаются"
#20
by Rie
Логичный. Один из наиболее точно и строго определённых языков (а среди промышленных языков - как бы не самый). Но проблема в том, что эту логику надо знать. Ну и эта логика (впрочем, как и любая другая) - не слишком наглядна (на любом форуме по C++ полно вопросов "а как эта хрень должна работать?", ответ на которые всегда находится и обосновывается - но не всегда очевиден).
#21
by Ненавижу 1С
фигня, Си уже страдал фигней, а в плюсах вместо полировки качества языка - фигни только добавили и стало просто жёпа вот такой он Си++ неудобный, но в свое время был наилучшим, всему свое время есть, приходит и уходит
#23
by Рэйв
тебе объяснить слово "по умолчанию"? или объяснить почему совсем без конструктора нельзя?
#25
by Rie
"Верблюда спросили: - Почему у тебя спина кривая? - А что у меня прямое? - ответил верблюд"
#28
by Rie
Если не утрировать - то действительно имеет место быть набор неудобств. Как следствие сложности самих языковых механизмов. Столь гибкое множественное наследие вкупе с управлением областями видимости нечасто встретишь, а если на это накладывается мощь C++ных шаблонов (которые, вообще говоря, как бы не Тьюринг-полные) - то начинается сплошное веселье.
#29
by Рэйв
Всегда ненавидел разбирать эти библиотеки..Там как в вики - начнешь искать отчество Ленина, очнешься что читаешь про овечку Долли....
#30
by Rie
+ Да и хотя бы те же конструкторы - они ведь в C++ отличаются от всех прочих (Java, Delphi, C# и т.д.).
#32
by Rie
"Кормил ребёнка. Положил соску на горячую плиту. Она прилипла. Набрал в поисковике "Как отодрать соску"..." (c) молодой, но уже бородатый анекдот
#36
by Rie
Не совсем. Конструктор в C++ работает с ещё не до конца созданным объектом - отсюда и некоторые ограничения. В новом стандарте это вроде бы подправили. Но (как обычно:-) сохранив "тонкую логику".
#39
by Рэйв
Да его жаба давит от пустой процедуры которая ничего не делает, но без которой ниче не работает:-)
#40
by Rie
Он не понимает, что она - НЕ пустая (в общем случае). И НЕ функция :-) (Насчёт последнего - поэтому ему и мало поможет общее понятие конструктора, поскольку в разных языках конструктор трактуется по разному).
#45
by Steel_Wheel
В смысле "не до конца"? Кажется, память уже выделена под типы, которые ты заявил в качестве переменных-членов класса. Т.е. с ними уже можно работать
#47
by Torquader
Не забывайте, что обязательно должен быть конструктор копирования (то есть функция, создающая один объект на основе другого такого же) - его компилятор создаёт автоматически, также как создаётся функция копирования для любых структур. Только это всё делается на этапах компиляции - в итоговом коде, если конструктор пустой, ничего вообще не появится.
#48
by Rie
Тут главная фишка не в том, что конструкторы создаются автоматически, а в том, что их можно переопределить - и получить от этого бонус (или по лбу - если глупо переопределить).
#50
by DGorgoN
Конструктор нужен всяко по стандартам языка для создания обьекта. Если конструктора нет - то и нет объекта.
#52
by toypaul
делает он это, чтобы инициализировать переменные объекта. например, переменные объекты.
#53
by Sk0rp
Объективных причин нет и это скорее всего компиляторозависимая фича. Такое на этапе компиляции прекрасно разруливается, можно сделать конструктор private и компилятор сам расскажет про все неявные места его вызова или попытки взять адрес.
#54
by Sk0rp
+ Конечно, если в теле есть объекты у которых есть свои конструкторы, то тогда надо сформировать код, который их в правильном порядке вызовет. Тогда генерация конструктора необходима и неизбежна. Более того компилятор вставит этот код даже в созданный явно конструктор. Переопределить это поведение можно записав вызов конструкторов через двоеточие после декларации конструктора,но до его тела (до открывающей фигурной скобки)
#55
by Sk0rp
C++0x посмотри, там кусок boost'а внесен в стандарт, введены автоматические типы переменных и еще куча всего.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Свой обмен в БСП с другой не типовой конфигурацией.
- ТУпой вопрос: как получить текст запроса динамического списка?
- 1с 77 Бухгалтерия типовая учет нескольких касс
- v7: ФС.НайтиСледующийФайл - как исключить заход в подпапку?
- Очень нужны правила конвертации при обмене с типовой БП из УТ 10.3.14.5!
- Возможно ли одним запросом выбрать элемент и его родителя верхнего уровня?
- Проверка на корректный ввод данных в УПП
- v8: ЗУП 8.2 персонифицированный учет не можем сделать
- УПП регламентированные отчеты представитель
- Обособленное подразделение в Бух 2,0 как?
- Корректировка реализации не делает движений
- УПП Создание планов производства по подразделениям
- Вопрос по расчету себестоимости в 1С КА или УПП
- УПП - объекты доступа документов
- В модулях: ТолстыйКлиентОбычноеПриложение на Клиент
- Ошибка разбора XML при печати РТУ, УПП 1.3.22.1 (после обновления)
- Файл подкачки на сервере SQL2008 (+сервер 1С)
- Как в конвертации указать в правилах обмена выборку документа по дате?
- Консоль запросов показывает результат а отчет на СКД нет
- Установил Microsoft Server 2008 R2, не раскрывается рабочий стол