|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
Что возвращает конструктор?31.10.2019, 23:35. Показов 13166. Ответов 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
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||||
| 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
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||
| 02.11.2019, 19:10 | ||
|
Объекты без участия конструктора создаются так, как написано в стандарте языка. В стандарте языка описывается масса способов инициализации без участия конструктора. Я привел явный пример в сообщении номер 36: https://www.cyberforum.ru/post13955891.html в котором, в частности, используется агрегатная инициализация и value-инициализация, которая в данном случае не использует конструкторов.
0
|
||
|
Комп_Оратор)
|
|||||||
| 02.11.2019, 19:16 | |||||||
0
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
|
||||||||
| 02.11.2019, 19:40 | ||||||||
|
К тому же вы написали тривиальный код, который любой оптимизирующий компилятор "усушит" до до одного и того же необходимого минимума, вне зависимости от абстрактных требований языка. Вот таком коде
a и b. Но никого, надеюсь, не удивит, если код в обоих случаях компилятор сгенерирует одинаковый? Наоборот, все скорее ожидают одинакового кода в таких случаях.Почему же вы ожидаете каких-то отличий в ваших вариантах?
1
|
||||||||
| 02.11.2019, 19:40 | |
|
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? Определить, что за параметр передается функции и что она возвращает Что означает запись в скобках и что возвращает return Что тут метод, а что конструктор? Что делает конструктор? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|