Заблокирован

Почему в С++ это сделано именно так? Объяснение для НЕ программиста

22.04.2017, 11:51. Показов 9319. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой теме хотелось бы задавать "тупые" вопросы по С++ и получить ответы и объяснения на нормальном человеческом языке, понятном НЕ программисту.

Т.е. без "птичьего языка", программистского сленга/жаргона и т.п.
А на понятном любому НЕ программисту языке.

Вопрос №1. Зачем расширили синтаксис инициализации в С++? Я о "скобочной форме" инициализации.

Добавлено через 2 минуты
Приведите примеры, где без этой скобочной формы инициализации просто никак.
Я имею в виду не потому что этого требует синтаксис, а про реальную пользу
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.04.2017, 11:51
Ответы с готовыми решениями:

Почему именно так ?!
Используйте функции fft и ifft в Mathcad, если выполнены следующие два условия: аргументы вещественны, и вектор данных имеет 2^m...

Почему именно так правильно?
Все данные текстовые. Первый вопрос. Вариант 1 while (temporari==0) // ищем номер столбца с нужным кодом, если доходим до 0 в...

Почему функция работает именно так?
Доброго времени суток! Помогите разобраться с кодом пожалуйста У меня есть фигурка которая крутится на экране. Есть функция которая...

72
22.04.2017, 19:38
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Чтобы вместе с кодом и форматированием?
https://www.cyberforum.ru/abou... st10201510
Но не злоупотребляйте этим.
Избыточное цитирование запрещено правилами.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.04.2017, 19:42
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Но зачем такая форма нужна для переменных БАЗОВЫХ/ВСТРОЕННЫХ/АТОМАРНЫХ типов?
1.
единый дизайн для всех типов без искл.

2.
единая работа с любыми типами при написании шаблонов.

Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Тем не менее во всех учебниках пишут про способ инициализации путем создания временного безымянного объекта с последующим его копированием
назовите хотябы один такой учебник.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.04.2017, 19:48
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
IGPIGP, только не надо передёргивать и не надо пытаться СПЕЦИАЛЬНО замарачивать некоторые вещи, чтобы человек не мог в них разобраться а Вы бы потом (свысока) сказали: "не всем дано".
Я больше чем уверен, что программирование "ВСЕМ ДАНО".
И что даже любую кухарку можно научить вполне прилично кодить.
И я берусь это доказать.
Я вас вспомнил. Отписываюсь.
1
Заблокирован
22.04.2017, 20:10  [ТС]

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Но не злоупотребляйте этим.
Избыточное цитирование запрещено правилами.
А как быть если я цитирую код, который мне написали?



Добавлено через 18 минут
Приведу цитату из книги (ссылку не дам так как тут забанивают за ссылки на внешние ресурсы - гуглом найдёте откуда это)
Конструкторы часто вызываются неявно для создания временных объектов. Обычно это происходит в следующих случаях:

при инициализации;
при выполнении операции присваивания;
для задания значений параметров по умолчанию;
при создании и инициализации массива;
при создании динамических объектов;
при передаче параметров в функцию и возврате результатов по значению.

Примеры:

monster Super(200, 300), Vasia(50);
monster X = monster(1000);

В последнем операторе создается объект Х, которому присваивается безымянный объект со значением параметра health = 1000 (значения остальных параметров устанавливаются по умолчанию).
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
22.04.2017, 20:30
ИсмаилПркопенко,
Почему при инициализации строки, сначала создаётся пустой объект?
Visual Studio - нормально, g++ - ошибка
0
Заблокирован
22.04.2017, 21:04  [ТС]
Croessmah, Т.е. нет НИКАКОЙ разницы написать my_class A(3,5); или my_class A = my_class(3,5);

Так?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
22.04.2017, 21:07
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Т.е. нет НИКАКОЙ разницы написать
Для фундаментальных типов разницы не будет.
Для классовых будет в некоторых случаях.
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
22.04.2017, 21:19
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Я больше чем уверен, что программирование "ВСЕМ ДАНО".
И что даже любую кухарку можно научить вполне прилично кодить.
Ключевое слово "кодить". Программирование разное бывает, как сказал кто-то: "есть программисты, а есть те, кто красит заборы". Я не сомневаюсь, что, пускай и с большими усилиями, можно научить кухарку писать фронтенд сайтов или даже бэкенд на каком-нибудь несложном фреймворке вроде django(код будет такой себе, но рабочий), но написать движок трёхмерной игры с простенькой физикой она вряд ли сможет.
0
Заблокирован
22.04.2017, 21:34  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Для классовых будет в некоторых случаях.
И в чем она?

Добавлено через 1 минуту
DevAlone, Я к тому, что многие тут так "объясняют", что складывается ощущение, что они не объяснить хотят, чтобы новичку было все понятно. А НАПРОТИВ. Специально его хотят заморочить и запутать, чтобы он пришел в отчаяние. И чтобы посмеяться над ним
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
22.04.2017, 21:35
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
И в чем она?
Практически в самом начале этой темы уже есть ответ на этот вопрос.
Вам как об стенку, так что не вижу смысла писать еще раз.
0
Заблокирован
22.04.2017, 21:39  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Практически в самом начале этой темы уже есть ответ на этот вопрос.
Вам как об стенку, так что не вижу смысла писать еще раз.
Плохой из Вас учитель.
Вы быстро раздражаетесь

Где "практически в начале"?
Начиная с какой страницы и с какого слова?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
22.04.2017, 21:40
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Плохой из Вас учитель.
Не Вам судить.
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Вы быстро раздражаетесь
Если человек не видит что ему пишут,
то смысла нет с ним беседовать.

Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Где "практически в начале"?
Начиная с какой страницы и с какого слова?
Вот. Всего один пост, который всё объясняет:
Цитата Сообщение от hoggy Посмотреть сообщение
но может быть критично для классов.
у них может оказаться запрещенным конструктор копии.
или не оказаться не explicit конструктора
1
Заблокирован
22.04.2017, 21:46  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
может быть критично для классов.
у них может оказаться запрещенным конструктор копии.
или не оказаться не explicit конструктора
Спасибо. Теперь понял, что Вы имели в виду.

Но так "осталось за кадром" А ЗАЧЕМ СОЗДАВАТЬ ТАКОЙ КЛАСС, в котором запрещен конструктор копирования? Какая от этого выгода?
Кстати как его запретить?
Сделать PRIVATE?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
22.04.2017, 21:46
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
DevAlone, Я к тому, что многие тут так "объясняют", что складывается ощущение, что они не объяснить хотят, чтобы новичку было все понятно. А НАПРОТИВ. Специально его хотят заморочить и запутать, чтобы он пришел в отчаяние. И чтобы посмеяться над ним
Сначала нужно уяснить, что никто вам ничего не должен, это полезно не только на форуме, но и вообще по жизни А "чтоб посмеяться" обычно отвечают, когда приходит какой-нибудь студент, которому нужно завтра сдавать программу, а сам ничего ещё не сделал, и скидывает задание, часто они даже не трудятся переписать его, а скидывают фотку.
0
Заблокирован
22.04.2017, 21:48  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
или не оказаться не explicit конструктора
А если у меня типы фактических и формальных параметров совпадают?
То разве не наплевать explicit у меня конструкто или НЕ explicit?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
22.04.2017, 21:49
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Но так "осталось за кадром" А ЗАЧЕМ СОЗДАВАТЬ ТАКОЙ КЛАСС, в котором запрещен конструктор копирования? Какая от этого выгода?
Например указатель unique_ptr, в нём запрещён, т.к. это такой указатель, который должен сам владеть своим объектом и нельзя чтобы кто-то "скопировал" его права владения.
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Кстати как его запретить?
Сделать PRIVATE?
раньше делали так, сейчас можно использовать конструкцию:
C++
1
ClassName(const ClassName&) = delete;
0
Заблокирован
22.04.2017, 21:50  [ТС]
DevAlone, по сабжу ответите? То бишь по С++.
Тут я вопросов уже с пару десятков накидал
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
22.04.2017, 21:52
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
DevAlone, по сабжу ответите? То бишь по С++.
Ответил
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Тут я вопросов уже с пару десятков накидал
Книжку б лучше одну прочитал, больше пользы было бы
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
22.04.2017, 21:52
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Но так "осталось за кадром" А ЗАЧЕМ СОЗДАВАТЬ ТАКОЙ КЛАСС, в котором запрещен конструктор копирования?
Очевидно - когда объект класса не должен копироваться.
Например, std::unique_ptr или стандартные stream-классы
имеют удаленный/запрещенный конструктор копирования.
Начиная с C++11, у них имеется перемещающий конструктор,
который может быть использован в copy-initialization.
0
Заблокирован
22.04.2017, 22:02  [ТС]
Цитата Сообщение от DevAlone Посмотреть сообщение
Например указатель unique_ptr, в нём запрещён, т.к. это такой указатель, который должен сам владеть своим объектом и нельзя чтобы кто-то "скопировал" его права владения.
Но тогда получается, что такой класс (ну в смысле объект данного класса - то же уже стал заговариваться и использовать программистский сленг) нельзя передавать как параметр функции?

Добавлено через 37 секунд
Цитата Сообщение от DevAlone Посмотреть сообщение
Книжку б лучше одну прочитал, больше пользы было бы
Я их прочитал с десяток. И только каша в голове от этого. Одни так пишут, другие эдак.

Добавлено через 4 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
у них может оказаться запрещенным конструктор копии.
или не оказаться не explicit конструктора
А если есть и то и это. Или типы формальных и фактических параметров ПОЛНОСТЬЮ совпадают и вызов конструктора преобразования не нужен?
То есть ли разница в этих двух способах инициализации?
C++
1
2
my_class A(3,5);
my_class B = my_class(3,5);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2017, 22:02

ОВЕН и др. Почему именно так измеряют???
Разобрал на работе несколько разных термодатов в частности ОВЕН, ВАРТА и еще какой то. И у все измерение температуру идет следующим...

Объясните почему работает именно так?
Добрый день. Пишу приложение и пытаюсь в меню добавить обработку метода jMenuItem1MouseClicked (при выборе пункта меню окно должно...

Почему в примере инкремент вычитается именно так
Здравствуйте! int a = 10, b = 3; int t = (a++) - b; b += t * a; Console.WriteLine("{0} {1}", t, b); Почему результат...

Обращение к массиву структур, почему именно так?
Почему в не которых функциях к елементам структуры обращаются *invtry , а в других просто invtry? #include <stdafx.h> #include...

Groovy Почему ObjectMapper работает именно так
У меня есть класс типа JsonResponse в котором есть поле result типа Object. Этому полю присваиваются разнообразные значения, в зависимости...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru