Войти
ПрограммированиеФорумГрафика

Вопрос по C++. (2 стр)

Страницы: 1 2 3 410 Следующая »
#15
8:46, 2 мая 2019

>и он делает new delete ручками.
Во и я так делаю, полет нормальный.


#16
8:50, 2 мая 2019

san
> a(10, 20);
> 'a' это функция или структура?
Так в новом стандарте как раз решили эту проблему:
F{} - конструктор
F() - функция

#17
8:54, 2 мая 2019

Suslik
> вам остаётся либо успевать, либо тихонько отходить к пенсии.

Когда-нибудь и тебе перевалит за сороковник и дальше (а пожелание отходить к пенсии в нашей стране эквивалентно пожеланию тихонько сдохнуть). Проблема здесь не субъективная, а объективная - мозг хуже/медленнее переваривает новую информацию. По крайней мере, учитывая это, приходится искать источники, где информация подается в более структурированном виде, чтоб именно структурированно уложить ее в мозг, т.к. просто прочитать "многабукв" и что-то из этого усвоить уже практически невозможно (кстати, как и кинуть кусок кода - "вот смотри, как сделано" - такое же "многабукв").

Логичнее всего в данном случае дать ссылку на какую-то информацию, где внимание акцентируется именно на нововведениях С++ 11/14 по сравнению с С++ 90-х годов (смартпоинтеры/move-semantics, лямбды, constexpr, что там еще?), желательно, чтоб с объяснением - а нахрена все это нужно - при наличии причинно-следственных связей информация усваивается гораздо проще.

#18
8:56, 2 мая 2019

Экспериментальные версии gnu-компилятора под то, что впоследствии стало стандартом C++11, с адаптацией буста под них, я видел еще в 2007м. А в 2002м уже были публикации проекта и бурные обсуждения. В конце 1999го думаю еще вообще ничего не было, тогда возможностей старой редакции всем хватало, еще их большинство до конца не освоило.
Так что, очень много лет этому "новому" стандарту.

#19
9:05, 2 мая 2019

Dmitry_Milk
> Когда-нибудь и тебе перевалит за сороковник и дальше (а пожелание отходить к
> пенсии в нашей стране эквивалентно пожеланию тихонько сдохнуть). Проблема здесь
> не субъективная, а объективная - мозг хуже/медленнее переваривает новую
> информацию.
ещё как. я только не могу понять, почему кто-то этим ещё и гордится. как только я не смогу успевать учиться, я состарюсь. это — повод для страха, а не гордости.

Dmitry_Milk
> Логичнее всего в данном случае дать ссылку на какую-то информацию, где внимание
> акцентируется именно на нововведениях С++ 11/14 по сравнению с С++ 90-х годов
> (смартпоинтеры/move-semantics, лямбды, constexpr, что там еще?),
ну так дай, если у тебя она есть. у меня — нет.

#20
9:07, 2 мая 2019

san
> ПОтом Я говорю не об перегруженном оператора, а о конструкции типа:
> a(10, 20);
это обычно решается через правильное именование. если a — глагол, то вызов функции, если a — существительное, то создание класса. если a — однобуквенный идентификатор, то автору можно задуматься о поиске другой профессии.

#21
11:42, 2 мая 2019

Никого не напрягает, что внутри реализации std::function вызывается new?

#22
12:06, 2 мая 2019

san
> Не факт. Зачем корежить язык? Все это можно реализовать штатными средствами,
> которые устаканились 20 лет назад. Или уже не насилуйте C++ и переходите на
> что-то принципиально другое. Правда пока ничего лучше еще не придумали.

сочувствую ... брат по несчастью
лямбды были в лиспе 50 лет назад

#23
(Правка: 12:31) 12:27, 2 мая 2019

san
Вообще выглядят лямбды как попытка уместить весь смыслы кода в одну строку. И многие этим злоупотребляют, когда видишь в одном входном параметре всю реализацию кода, да еще в одну длинную строчку. Смотри на это как альтернативную запись указателя с функцией. По сути так и есть, надеюсь придет время, когда люди эти понятия по значимости уровняют и научаться видеть одинаковое количество плюсов и минусов в обоих реализациях.

В общем по мне это показатель личного предпочтения к формированию кода. На С# ими как то накушались, а здесь в виде новшества пока любят злоупотреблять.

#24
(Правка: 12:56) 12:55, 2 мая 2019

О конструкции вида a(10, 20); даже не имея никакого контекста, можно сказать ровно следующее:
a — это некий символ, который можно вызвать с 2 аргументами типа int (или тем, что может быть неявно преобразовано из int)
Неким символом, который может быть вызван, в c++ может служить функтор, указатель на функцию или конструктор.
Объявление лямбда-выражения, которое по сути является безымянной функцией, не сильно отличается от объявления именованной функции — их синтаксис очень похож.
Как у вас при 25-летнем стаже возник вопрос о том, что имена переменных, объявленных в виде аргументов функции, отсутствуют в контексте вызова — мне не ясно. Их и не должно быть в контексте вызова, это просто имена аргументов для использования внутри функции — точно так же, как и у любой другой функции.

Про auto для аргументов я согласен, но посыл вы поняли неправильно. При объявлении шаблонов должен быть использован синтаксис объявления шаблонов. Без template<> при беглом просмотре шаблонную функцию будет сложно отличить от обычной — именно в этом кроется зло.

#25
(Правка: 13:18) 13:14, 2 мая 2019

pahaa
> Про auto для аргументов я согласен
Во первых это "auto*" указатель. По старому тут можно было бы "void*" написать, а потом в реализации приводить к конкретному типу. Поскольку тут ни каких специальных функций преобразования типов спрятанных под капотом не требуется, без явного преобразования проще "auto*".

#26
13:18, 2 мая 2019

Я просто понаблюдаю как Суслик унижает хейтеров лямбд.

#27
13:37, 2 мая 2019

А смысл объяснять... Если человеку в жизни не встречалась необходимость массовых колбэков, наверное он прикладной программист и С++ ему нафиг не сдался даже в базовом варианте, не то что с расширениями.
Лямбда в основном используется для приведения колбэков в читабельный и управляемый вид. Пока у тебя колбэков пять на всю программу, их можно запрограммировать любыми средствами, а если их много сотен, если не тысяч?

#28
13:43, 2 мая 2019

Колбеков много, а лямбд раз два и обчелся, наверное я делаю что-то не так. Но писать лямду в месте присвоения колбека когда под них уместнее полноценная функция порой сильно не удобно и затрудняет в последствии навигацию. Бывают и обратные случаи, но так сложилось что попадаются они редко.

#29
13:50, 2 мая 2019

Zab
> Лямбда в основном используется для приведения колбэков в читабельный и
> управляемый вид
Ага, а в std алгоритмы мы будем передавать функторы...

Страницы: 1 2 3 410 Следующая »
ПрограммированиеФорумГрафика