|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||||||
Прямая инициализация в C++ и функция-конструктор в Javascript09.04.2020, 02:01. Показов 7326. Ответов 76
Метки нет (Все метки)
Вопрос собственно следующий, а не является ли прямая инициализация обычным вызовом функции как это сделано при создании объекта с помощью функции-конструктора в Javascript ? Просто сам синтаксис
p.s. https://learn.javascript.ru/fu... onstructor p.p.s. https://learn.javascript.ru/cl... a-funktsii
0
|
||||||
| 09.04.2020, 02:01 | |
|
Ответы с готовыми решениями:
76
Конструктор копий, инициализация объектов Инициализация массива через конструктор
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 09.04.2020, 22:12 | ||
|
0
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 09.04.2020, 22:16 | |||
|
Вам уже не раз подробно объяснили, что синтаксис T() - это синтаксис явного преобразования типа в функциональной нотации, который работает по правилам инициализации. Правила инициализации для типа int нигде и никак не используют никаких "конструкторов" ни на одном из шагов. С чего бы это вдруг тут будет какая-то ошибка?Добавлено через 2 минуты int - не превращается.Такая инициализация превращается в value-инициализацию (http://eel.is/c++draft/dcl.init#11). А value-инициализация разворачивается по правилам http://eel.is/c++draft/dcl.init#8, которые говорят, что объект не-класс типа будет подвергнут zero-initialization. Все, никаких конструкторов.
0
|
|||
|
Неэпический
|
|||||
| 09.04.2020, 22:22 | |||||
value-initialization. Читаем про нее: https://eel.is/c++draft/dcl.init#8 Для нашего случая с int имеем
int речи даже не идет. И direct-initialization != вызов конструктора.Добавлено через 1 минуту Опоздал.
0
|
|||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||||||
| 09.04.2020, 22:35 | ||||||
|
Интересным моментом value-инициализации, кстати, является то, что даже при работе с класс-типами она выходит за рамки того, что делает конструктор
0
|
||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 09.04.2020, 22:53 | ||
|
0
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 09.04.2020, 23:07 | ||
|
Вам кажется, что таким образом вы упрощаете спецификацию, подгоняя все типы под одну концепцию. (Как, кстати, это делает и Страуструп в TC++PL). Однако если бы это было так просто, то и авторы стандарта языка тоже с радостью бы это сделали. Однако это НЕ так просто. Если волевым усилием подогнать процесс инициализации не-класс типов под "конструкторы", то количество проблем, которые этот шаг создаст, намного превысит количество проблем, которые этот шаг решит. Это намного усложнит спецификацию языка, а не упростит ее, как вы наивно полагаете. Чтобы понимать это, надо обладать намного более широким, чем ваше, пониманием проблем и взаимосвязей, присутствующих в спецификации С++. Вы и сами видите, как вам приходится вертеться ужом и придумывать все новые и новые исключения из ваших "правил", когда вам приводят все новые и новые контрпримеры, опровергающие ваши "теории". А в рамках всего языка, ваши "теории" со всем этими "исключениями" превратятся в такой ужас, который на порядки ужаснее того, что мы имеем сегодня.
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 10.04.2020, 00:22 | ||
|
0
|
||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|||||
| 21.04.2020, 00:17 [ТС] | |||||
|
Croessmah,
Если инициализатор является одиночным выражением в скобках, выражение преобразования типа эквивалентно соответствующему выражению приведения. то есть в T() никакого выражения в скобках нет, а если бы было, то как понял T(int) равносильно (T)int было бы, т.е. T() не этот случай. Второе не смог адекватно перевести и понять, смутило cv void, что такое cv непонятно. Далее третье В противном случае выражение представляет собой значение указанного типа, чей результирующий объект получается при помощи direct-initialization с помощью инициализатора. т.е. это как раз случай T(). И последнее предложение тоже не понял.
Добавлено через 10 минут Оказывается и в js не всё объекты, раздел Бонус: не все является объектами https://medium.com/devschacht/... 591ab15bef
0
|
|||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 21.04.2020, 01:05 | |||
|
(Обратите внимание, как стандарт языка постоянно в таких случаях использует термин инициализация, а не "конструкция" и не упоминает никаких "конструкторов". Инициализация - имен правильный термин в таких случаях. Это существенно более широкое и универсальное понятие, покрывающее все типы данных. Инициализация вызовом конструктора - один из частных видов инициализации, применимый только к классам) Вы как раз и процитировали кусочек описания процесса direct-initialization, на который ссылалось предыдущее правило. Однако вы выдрали только кусочек, который относится только к инициализации класс-типов ("Otherwise, if the destination type is a (possibly cv-qualified) class type:...")
1
|
|||
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 21.04.2020, 01:43 [ТС] | |
|
TheCalligrapher, трудно не согласиться)
Добавлено через 8 минут TheCalligrapher, а не подскажите где тут https://vk.com/doc247540843_45... ad8289af10 правило 17.6 найти ?
0
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|
| 21.04.2020, 01:52 | |
|
1
|
|
|
59 / 49 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
| 21.04.2020, 03:43 [ТС] | |
|
TheCalligrapher, спасибо!
0
|
|
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
||||||||||
| 18.06.2020, 12:45 | ||||||||||
int-а?1) Интересно, не нарочно ли "Footnote: " не процитировано?
0
|
||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||||
| 18.06.2020, 13:07 | |||||
|
Смотреть вам надо сюда http://eel.is/c++draft/basic.indet#2. Специально для вас выделю жирным: "If an indeterminate value is produced by an evaluation, the behavior is undefined except in the following cases:" Я надеюсь, вы понимаете, что доступ к значению переменной делается именно через evaluation. Дальше объяснять, что такое undefined behavior, или уже все понятно стало? Цель этой части спецификации - та же что и авторов стандарта С - ослабить требования к неинициализированным значениям unsigned char и сохранить undefined behavior для всех остальных типов, включая т.наз. "Itanium clause", о которой вы можете почитать здесь: https://stackoverflow.com/ques... d-ia64-natЯ на всякий случай повторю для вас ("отсебятиной"): чтение indeterminate value в С++ (как и в С) является неопределенным поведением, за исключением ряда специально оговоренных "байтовых" случаев. int-а" идет речь и к чему это здесь. (Участники форума еще раз удивленно переглянулись и пожали плечами.)Я, кажется, довольно понятно объяснил, что такое value-lifetime. Вы что-то не поняли из моего объяснения? Если у вас есть вопросы - задавайте их. И все мои объяснения здесь написаны мною самим, т.е. являются, как вы эмоционально выразились, "отсебятиной". Но это та самая "отсебятина", благодаря которой вы лично, наконец, чему-то учитесь. Ради этой отсебятины вы сюда и пришли.
0
|
|||||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|||||||
| 18.06.2020, 13:25 | |||||||
Добавлено через 6 минут Добавлено через 7 минут
0
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||||
| 18.06.2020, 13:28 | ||||
|
А если "пионэр" вздумает ставить свои "пионэрские" эксперименты с indeterminate value, то ему, "пионэру", может показаться что значение меняется безо всякой на то причины. Вот откуда там взялось слово "appear". Оно может "appear to change its value" с точки зрения наивного наблюдателя. ![]() Я, кстати, народ, даже сам удивился тому, что тема закрылась так легко через UB. Думал, что в C++17 и позже придется копать намного глубже. А оно на самом деле по-прежнему так же просто, как и в С. Что, в приниципе, и неудивительно.
0
|
||||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|||||||
| 18.06.2020, 14:08 | |||||||
|
Как только на этом форуме не могут ответить на формальные аргументы, начинают втирать про "суть" или про "концептуально". Или это типа намёк на то, что ты знаешь, что там у TheCalligrapher в профайле на SO написано про то где он работает, а я не знаю? Так как мы видим, кто где и/или кем работает это не показатель. "Интересные личности" с дефолтными конструкторами у int тоже, похоже, где-то по специальности работают.
0
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 18.06.2020, 14:21 | ||
int и выместить это все вы решили на нас в этой ветке.Я понимаю вашу фрустрацию: вы, поспешив, схватились за свою странную жирную цитату, как за копье, и, даже толком не вникнув в ее суть, ворвались сюда верхом на лошадке "наводить порядок". А взамен получили ушат холодной воды и твердую каменную стену совершенно очевидных фактов из стардарта. Которые и сами должны были заметить. Вот и копье оказалось пшиком, и лошадка постепенно сдулась... От такой резкой перемены вы впали в состояние denial и теперь отчаянно хватаетесь за соломинки... Это нормально. Меня, кстати, особенно умилила соломинка со словом "appear"
0
|
||
|
Неэпический
|
||
| 18.06.2020, 14:23 | ||
А что далее? Будешь искать опечатки и ошибки в тексте собеседника?
0
|
||
| 18.06.2020, 14:23 | |
|
Конструктор и Деструктор (инициализация массивов)
Инициализация массива через конструктор. Вопрос.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|