|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
Что возвращает конструктор?31.10.2019, 23:35. Показов 13356. Ответов 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
|
||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
||||
| 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
|
|
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
||
| 02.11.2019, 19:10 | ||
|
Объекты без участия конструктора создаются так, как написано в стандарте языка. В стандарте языка описывается масса способов инициализации без участия конструктора. Я привел явный пример в сообщении номер 36: https://www.cyberforum.ru/post13955891.html в котором, в частности, используется агрегатная инициализация и value-инициализация, которая в данном случае не использует конструкторов.
0
|
||
|
Комп_Оратор)
|
|||||||
| 02.11.2019, 19:16 | |||||||
0
|
|||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
|
||||||||
| 02.11.2019, 19:40 | ||||||||
|
К тому же вы написали тривиальный код, который любой оптимизирующий компилятор "усушит" до до одного и того же необходимого минимума, вне зависимости от абстрактных требований языка. Вот таком коде
a и b. Но никого, надеюсь, не удивит, если код в обоих случаях компилятор сгенерирует одинаковый? Наоборот, все скорее ожидают одинакового кода в таких случаях.Почему же вы ожидаете каких-то отличий в ваших вариантах?
1
|
||||||||
| 02.11.2019, 19:40 | |
|
Что можно сделать, что бы конструктор вызывался один раз при агрегировании? Определить, что за параметр передается функции и что она возвращает Что означает запись в скобках и что возвращает return Что тут метод, а что конструктор? Что делает конструктор? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|