|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
Что возвращает конструктор?31.10.2019, 23:35. Показов 13593. Ответов 69
Метки нет (Все метки)
Что возвращает конструктор?
Читал что если написать myclass() ; (myclass это созданный класс), то создаётся безымянный объект, но как-то странно звучит, если это правда можно подробнее?
0
|
|
| 31.10.2019, 23:35 | |
|
Ответы с готовыми решениями:
69
Что возвращает конструктор? Конструктор Shader() возвращает null Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор |
|
Комп_Оратор)
|
||||||||
| 01.11.2019, 21:59 | ||||||||
Добавлено через 5 минут TheCalligrapher, я преклоняюсь перед вашими знаниями, но некоторая категоричность слегка смущает. То есть, "...совершенно ни какого отношения не имеет...", "совершенно неверно" ... Совершенство вещь недостижимая. Но я вас понял. Спасибо.
0
|
||||||||
|
"C with Classes"
|
||
| 01.11.2019, 22:07 | ||
|
0
|
||
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||||
| 01.11.2019, 22:17 | ||||
|
Какой компилятор С++ ни возьми, какое поведение ни рассмотри, всегда можно будет сказать: "Я не верю, что этот компилятор реализует стандарт языка С++. Я верю, что на самом деле внутри компилятора бегают инопланетные зеленые гномики, которые все делают по-своему, а на стандарт им глубоко плевать. Да, внешнее поведение совпадает со стандартным, но внутри эти гномики все сделали по-своему. У них там не только конструкторы есть, но и шмустракторы, и кергукторы. Я в это верю." Каким образом вы мне предлагаете доказывать, что это не так? Это невозможно доказать. Более того, вполне возможно, что внутри какого-то компилятора действительно бегают зеленые гномики с шмустракторами и кергукторами. И такой компилятор даже будет конформным, если внешнее поведение сгенерированного им кода соответствует стандарту языка. Но к чему это здесь? Мы здесь говорим не о том, как ведут себя воображаемые инопланетные компиляторы, а о языке С++ как таковом. Что там творится внутри компиляторов - не имеет никакого значения и к теме никак не относится. Добавлено через 6 минут В POD классах, являющихся фактически аналогом голых сишных структур, конструктор по умолчанию тривиален, т.е. существует чисто концептуально. Он ничего не делает и никакого кода не порождает. Физически его не существует. А номинальное его существование нужно лишь для упрощения формального изложения в тексте стандарта языка. Текст становится намного проще. А как только речь заходит о "нетривиальных" классах, то вы сами уже ответили на свой вопрос: да, неявный конструктор будет вызывать конструкторы баз и полей класса (которые не обязательно "бесполезны"), а также выполнять такие внутренние инициализации, как инициализация указателя на VMT.
1
|
||||
|
"C with Classes"
|
||
| 02.11.2019, 11:56 | ||
|
0
|
||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||||||||
| 02.11.2019, 13:21 [ТС] | ||||||||
|
IGPIGP,
если сделать вот так :
TheCalligrapher,
0
|
||||||||
|
Комп_Оратор)
|
|||||
| 02.11.2019, 13:46 | |||||
|
0
|
|||||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 02.11.2019, 14:09 [ТС] | |
|
IGPIGP, почему если у нас есть конструктор типа Struct() и Struct(int a) то в первом случае я не могу создать объект Struct obj(), а во втором могу Struct obj(5)?
Добавлено через 2 минуты Croessmah, а зачем такую форму вообще разрешили? Она используется в каких-то определённых ситуациях в которых обычная Struct obj; не подойдёт?
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 02.11.2019, 15:37 | |
|
Vanconts,
Почитайте про прототипы функций и попробуйте ответить на вопрос: Struct obj(); это прототип или создание обьекта типа Struct.
0
|
|
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 02.11.2019, 16:00 [ТС] | |
|
Undisputed, прочитал и да, действительно, это прототип функции, теперь я понимаю, Вы не знаете случаем для чего нужна форма Class obj = Class()?
Добавлено через 26 секунд Undisputed, и как объекты создаются без участи конструкторов?
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||||
| 02.11.2019, 16:38 | |||||||||
1) https://rextester.com/SXCO19846 2) https://rextester.com/POS25155 если инициализация прошла успешно - значит объект сформирован в некоторых случаях как вот тут Что возвращает конструктор? вызов конструктора для успешной инициализации не требуется и вообще все это формальности... конструктор, деструктор... под капотом это всего лишь "гонение" в регистры данных и выполнение машинных команд процессор даже не знает ни о каких конструкторах ![]() Добавлено через 1 минуту поэтому не нужно удивляться тому что объекты могут быть сформированы без участия конструкторов
0
|
|||||||||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 02.11.2019, 16:46 [ТС] | |
|
Undisputed, как называется эта тема с инициализации? Хочу почитать
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 02.11.2019, 16:51 | |
|
Vanconts,
это большая тема т.к есть разные виды инициализации и зависимости от того что именно вам нужно тема может называться по разному. https://habr.com/ru/company/jugru/blog/469465/ вот здесь можете почитать по поводу инициализаций
0
|
|
|
"C with Classes"
|
||
| 02.11.2019, 16:56 | ||
|
0
|
||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 02.11.2019, 17:24 [ТС] | |
|
_stanislav, Тоесть мне лучше пока тчо просто понять что Struct st = Struct() это равносильно Struct st и пока что дальше не лезть?
0
|
|
|
"C with Classes"
|
|
| 02.11.2019, 17:36 | |
|
1
|
|
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||
| 02.11.2019, 19:10 | ||
|
Объекты без участия конструктора создаются так, как написано в стандарте языка. В стандарте языка описывается масса способов инициализации без участия конструктора. Я привел явный пример в сообщении номер 36: https://www.cyberforum.ru/post13955891.html в котором, в частности, используется агрегатная инициализация и value-инициализация, которая в данном случае не использует конструкторов.
0
|
||
|
Комп_Оратор)
|
|||||||
| 02.11.2019, 19:16 | |||||||
0
|
|||||||
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||||||||
| 02.11.2019, 19:40 | ||||||||
|
К тому же вы написали тривиальный код, который любой оптимизирующий компилятор "усушит" до до одного и того же необходимого минимума, вне зависимости от абстрактных требований языка. Вот таком коде
a и b. Но никого, надеюсь, не удивит, если код в обоих случаях компилятор сгенерирует одинаковый? Наоборот, все скорее ожидают одинакового кода в таких случаях.Почему же вы ожидаете каких-то отличий в ваших вариантах?
1
|
||||||||
| 02.11.2019, 19:40 | |
|
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? Определить, что за параметр передается функции и что она возвращает Что означает запись в скобках и что возвращает return Что тут метод, а что конструктор? Что делает конструктор? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|