Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
Заблокирован

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

22.04.2017, 11:51. Показов 9226. Ответов 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
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
22.04.2017, 22:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
И в чем она?
В копировании объекта, которое как ни странно происходит не мгновенно. А потом спрашивают почему при десяти гигах оперативки и четырех ядрах программа еле шевелится.
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Но тогда получается, что такой класс (ну в смысле объект данного класса - то же уже стал заговариваться и использовать программистский сленг) нельзя передавать как параметр функции?
Про передачу по ссылке не слышали?
0
Заблокирован
22.04.2017, 22:19  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
В копировании объекта
Т.е. таки создается два объекта? Основной и безымянный/временный?
А мне на другом форуме сказали, что не создается. И что ничего никуда не копируется. Что объект сразу создается в нужном месте ОЗУ и поэтому ничего никуда копировать не надо.

Цитата Сообщение от Renji Посмотреть сообщение
Про передачу по ссылке не слышали?
Вот вот. Именно поэтому копирования и не происходит (так мне сказали).
И поэтому программа "при десяти гигах оперативки и четырех ядрах программа" шевелится нормально. Так?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
22.04.2017, 22:26
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Т.е. таки создается два объекта? Основной и безымянный/временный?
А мне на другом форуме сказали, что не создается. И что ничего никуда не копируется.
Если без оптимизаций со стороны компилятора то да, создается два объекта. Если с оптимизациями, то возможны любые чудеса вплоть до исчезновения объекта в воздухе. Ибо компилятор обязан сохранять только видимое поведение программы (пока программа печатает на экран что задумывалось, компилятор может как угодно надругаться над ее потрохами). Только я бы не слишком на эти чудеса полагался. Особенно, если конструктор копирования в классе мудреный.
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
22.04.2017, 22:28
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Т.е. таки создается два объекта? Основной и безымянный/временный?
C++
1
my_class B = my_class(3,5);
Читаю я тут, читаю, но одну вещь не увидел до сих пор... Насколько мне известно, компиляторы уже давно стали умными и в таких случаях не буду генерировать новый объект, а просто вызовут конструктор для `B`, причем не конструктор копии, а именно конструктор с указанной сигнатурой.

Т.е. компилятор видит в момент инициализации запись типа
C++
1
SomeObject obj = SomeObject(...);
и ему ясно, что создавать временный объект здесь нафиг не нужно, и можно обойтись просто вызовом конструктора, и делает это. Т.е. поведение то же, что и в случае вызова
C++
1
SomeObject obj(...);
И это правильно. Пруфов не будет, так что извиняйте, но как минимум у Мейерса это точно где-то было.

Зачем так пишут - другой вопрос. Вот более приличная запись -
C++
1
auto B = my_class(3,5);
Здесь имя типа не дублируется, в отличие от предыдущего случая.

Типа, это запись ближе к математической форме записи присваивания, нежели вызов конструктора (`x(2)`). Для единообразия, в конце концов (это вроде и одна из причин ввода инициализации через фигурные скобки x{2}). Code style.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
22.04.2017, 22:40
Цитата Сообщение от monolit Посмотреть сообщение
Т.е. поведение то же, что и в случае вызова
Нет, не то же. Простой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Test
{
    Test() = default;
    Test(const Test&) = delete;
};
 
 
 
int main()
{
    Test t1(Test());//ok
    Test t2 = Test();//ошибка компиляции
}
Сначала должна соблюдаться семантика.
Выше я давал ссылку на объяснение.
Если при copy-initialization не будут соблюдены
указанные hoggy требования, то упремся в ошибку компиляции.
Это уже потом будут выпилены временные копии,
конечно, если не помешать компилятору этого делать.

Цитата Сообщение от monolit Посмотреть сообщение
Пруфов не будет, так что извиняйте, но как минимум у Мейерса это точно где-то было.
13.3.1.3/1
When objects of class type are direct-initialized (8.5), or copy-initialized from an expression of the same or a derived class type (8.5), overload resolution selects the constructor. For direct-initialization, the candidate functions are all the constructors of the class of the object being initialized. For copy-initialization, theт candidate functions are all the converting constructors (12.3.1) of that class. The argument list is the expression-list or assignment-expression of the initializer.
1
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
22.04.2017, 22:42
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
уже стал заговариваться и использовать программистский сленг
Не бойтесь, программистом от этого не станете)
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Но тогда получается, что такой класс (ну в смысле объект данного класса - то же уже стал заговариваться и использовать программистский сленг) нельзя передавать как параметр функции?
Передавайте по ссылке.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.04.2017, 00:33
Который раз читаю данного трамвайного персонажа и все думаю - а зачем непрограммисту с кухаркой С++? Что они, без него не найдут чем заняться? Имхо, у них море альтернатив, в том числе и среди языков программирования
1
Заблокирован
23.04.2017, 07:12  [ТС]
_Ivana, Проходите, товарищ, проходите.
Не засоряйте эфир.
Тут люди серьёзные вопросы обсуждают. Ваш троллинг тут ни к месту

Добавлено через 2 минуты
Цитата Сообщение от _Ivana Посмотреть сообщение
а зачем непрограммисту с кухаркой С++?
Для общего развития.
Зачем Вы ходите в театры - Вы же не искусствовед.
Зачем ходите в кино - Вы же не кинокритик.
Зачем ходите в картинные галлереи - Вы же не художник.

Просто разрыв между программистом и обычным человеком становится все больше и больше. Как пропасть.

Я хочу сократить этот разрыв и чтобы и простые люди хоть немного понимали: а чем же занимаются программисты?
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
23.04.2017, 07:46
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
а чем же занимаются программисты?
Сидят на этом форуме, отвечают на вопросики всякие, вроде Ваших)) Иногда на улицу выходят

Не по теме:

Интересно, когда тему закроют? :scratch:

2
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
23.04.2017, 11:33
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
а чем же занимаются программисты?
Деньги зарабатывают. Тыщ 100-300 за то, что знают много умных слов. Как сыр в масле катаются
2
23.04.2017, 11:35

Не по теме:

ct0r, я тоже так хочу. :D

0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
23.04.2017, 20:16
Цитата Сообщение от ct0r Посмотреть сообщение
Тыщ 100-300 за то, что знают много умных слов
Сколько умных слов нужно знать, чтоб заработать на свой дом?)
0
26.04.2017, 21:44
 Комментарий модератора 
Тема себя исчерпала. Закрыто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2017, 21:44

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

Объясните почему работает именно так?
Добрый день. Пишу приложение и пытаюсь в меню добавить обработку метода 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. Этому полю присваиваются разнообразные значения, в зависимости...


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

Или воспользуйтесь поиском по форуму:
73
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru