|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
Что возвращает конструктор?31.10.2019, 23:35. Показов 12730. Ответов 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
|
||
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
||||
| 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
|
|
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
||
| 02.11.2019, 19:10 | ||
|
Объекты без участия конструктора создаются так, как написано в стандарте языка. В стандарте языка описывается масса способов инициализации без участия конструктора. Я привел явный пример в сообщении номер 36: https://www.cyberforum.ru/post13955891.html в котором, в частности, используется агрегатная инициализация и value-инициализация, которая в данном случае не использует конструкторов.
0
|
||
|
Комп_Оратор)
|
|||||||
| 02.11.2019, 19:16 | |||||||
0
|
|||||||
|
Вездепух
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
|
||||||||
| 02.11.2019, 19:40 | ||||||||
|
К тому же вы написали тривиальный код, который любой оптимизирующий компилятор "усушит" до до одного и того же необходимого минимума, вне зависимости от абстрактных требований языка. Вот таком коде
a и b. Но никого, надеюсь, не удивит, если код в обоих случаях компилятор сгенерирует одинаковый? Наоборот, все скорее ожидают одинакового кода в таких случаях.Почему же вы ожидаете каких-то отличий в ваших вариантах?
1
|
||||||||
| 02.11.2019, 19:40 | |
|
Помогаю со студенческими работами здесь
60
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? Определить, что за параметр передается функции и что она возвращает Что означает запись в скобках и что возвращает return Что тут метод, а что конструктор? Что делает конструктор? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|