Этого треда уже нет.
Это копия, сохраненная 24 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
44 Кб, 600x402
Оффициальный™ традиционный® C++ тред #36 #776344 В конец треда | Веб
Как то ОП пошел на свалку
И нашел крутую палку
Палку вымазал говном
Получился агроном

Агроном взял в руку хуй
И ударил по компу
Напиисал он компилятор
Скажем им спасибо - ой!


Старший брат: >>749121 (OP)
Предыдущий: >>764736 (OP)

TL;DR

Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.

Памятка ньюфагу

  • Вопросы по синтаксису идут на хуй
  • Лабы идут на хуй
  • "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
  • Все идут на хуй
  • Хейтер сосет члены на пару со своей мамашей

Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.


FAQ

Мотивация

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:

  • Скорость
    C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
  • Мощь
    C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искусственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
  • Популярность
    C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

Q: Но он же давно устарел!
A: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".

Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.

Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.


Литература

Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

  • Для нюфань

    Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr
    Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela
    Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u

  • Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:


    Автор(ы) Название Год Ссылка
    Герберт Шилдт C++. Базовый курс 2010 https://goo.gl/qMLAFl
    Роберт Лафоре Объектно-ориентированное программирование в C++ 2004 https://goo.gl/QvjR6x

  • Best practices

    Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:


    Автор(ы) Название Год Ссылка
    Скотт Мейерс Эффективное использование C++ 2005 https://goo.gl/wsDXGz
    Скотт Мейерс Наиболее эффективное использование C++ 1996 https://goo.gl/tHa0tO
    Скотт Мейерс Эффективный и современный C++ 2015 https://goo.gl/Im8VYQ
    Скотт Мейерс Эффективное использование STL 2002 https://goo.gl/QtS8Dc
    Герб Саттер и Андрей Александреску Стандарты программирования на языке C++ 2005 https://goo.gl/Cpk4YR

  • Проектирование

    Следует пролистать все перед переходом от лаб к написанию настоящего софта.
    Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:


    Автор(ы) Название Год Ссылка
    Ален Голуб Веревка достаточной длины, чтобы выстрелить себе в ногу 2001 https://goo.gl/fBmuxp
    Джеймс Коплиен Программирование на C++ 2005 https://goo.gl/Y1WGdU
    Андрей Александреску Современное проектирование на C++ 2002 https://goo.gl/e1V5BC

    Ахтунг!
    Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).

  • Справочники

    Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Язык программирования C++ 2013 https://goo.gl/XkAiOX (на ангельском)
    Бьерн Страуструп Язык программирования C++ 2010 https://goo.gl/iZBDiV <устарело>

    Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.

  • Тонкости языка

    Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:


    Автор(ы) Название Год Ссылка
    Герб Саттер Решение сложных задач на C++ 2002 https://goo.gl/iWaa6S
    Герб Саттер Новые сложные задачи на C++ 2004 https://goo.gl/4nn512
    Бьерн Страуструп Дизайн и эволюция C++ 1994 https://goo.gl/FqbPwo (для легкого чтения)

  • Отдельные аспекты

    Читать по необходимости:


    Автор(ы) Название Год Описание Ссылка
    Энтони Уильямс Параллельное программирование на C++ в действии 2012 Про использование std::thread
    и других фич последних стандартов
    для разработки многопоточных приложений
    https://goo.gl/qJfBkD
    Николаи Джоссатис C++. Стандартная библиотека 2012 Детальный справочник по STL и
    остальным частям стандартной библиотеки
    https://goo.gl/PEyiMH
    Дэвид Абрахамс и Алексей Гуртовой Шаблонное метапрограммирование на C++ 2009 "Мы встроили в шаблоны C++ функциональный
    язык программирования, чтобы ты мог
    программировать, пока программируешь"
    https://goo.gl/isSt7j
    Дэвид Вандевурд и Николаи Джоссатис Шаблоны C++. Справочник разработчика 2003 После прочтения этой книги тебя не приведут
    в ужас даже исходники boost::MPL
    https://goo.gl/0M4NpG
    Роберт Седжвик Фундаментальные алгоритмы на C++ 2001 Стандартный курс алгоритмов с примерами
    на C++. Для его чтения не нужно знать
    мертвые языки, в отличие от этого вашего Кнута
    https://goo.gl/4jwxSl (части 1-4),
    https://goo.gl/yDuQgG (часть 5)


Другие обучающие материалы

Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три

Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:

  • Годный блог, в котором все просто и понятно тян не нужны кококок борщ
  • Блог с хорошо расписанными фичами новых стандартов
  • Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
  • Блог Герба Саттера (на ангельском)
  • Блог Скотта Мейерса (на ангельском)
  • Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
  • Куча других блогов (на ангельском)
  • Большой FAQ по C++ (на ангельском)
  • Видео с CppCon (на ангельском)


Софт и библиотеки

Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:


Платформа Название Описание Ссылка
Windows Microsoft™ Visual Studio® Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда https://goo.gl/qgAAc6 (русская версия) или
https://goo.gl/WIPW9L (ангельская версия)
Все CodeLite Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM http://codelite.org/,
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все CLion IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует https://www.jetbrains.com/clion

Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.

Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.

Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:

  • Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
  • Более навороченный, но коммерческий аналог
  • Встроенный в clang статический анализатор
  • Детектор утечек для Visual Studio. Предельно прост в прикручивании
  • На порядок более мощная и сложная утилита для *nix, служащая тем же целям
  • Гугловские утилиты для контроля корректности кода
  • Гугловский фреймворк для автоматизации тестирования

Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.

Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:

  • boost

    Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.

    Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.

    Литература:


    Автор(ы) Название Год Ссылка
    Ариндам Мукерджи Learning Boost C++ Libraries 2015 https://goo.gl/b0gPN1 (на ангельском)

  • Qt

    Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.

    Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.

    В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

    Литература:


    Автор(ы) Название Год Ссылка
    Макс Шлее Qt 5.3. Профессиональное программирование на C++ 2015 https://goo.gl/aZ66gK
    Макс Шлее Qt 4.8. Профессиональное программирование на C++ 2012 https://goo.gl/Slb1In (книга) +
    https://goo.gl/toUDWc (исходники примеров)
    Марк Саммерфилд Qt. Профессиональное программирование 2011 Только Qt 4.х:
    https://goo.gl/qpkZFm (книга) +
    https://goo.gl/LIIECh (исходники примеров)

  • Другие хорошие библиотеки

    Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:

    • libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
    • SFML - работа с графикой и аудио
    • FLTK - графические интерфейсы

    И еще куча библиотек на любой вкус.


Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


#2 #776347
А вообще, я за то, чтобы кидать ссылку на шапку, а не вставлять ее сюда. Слишком уж большая.
>>776350>>776365
#3 #776349
Как то ОП пошел на свалку
И нашел крутую палку
Палку вымазал говном
Получился агроном

Агроном взял в руку хуй
И ударил по компу
Напиисал он компилятор
Скажем им спасибо - ой!
#4 #776350
>>776347
ну или вкидывать укороченную версию и ссылку на полную.
#5 #776365
>>776347
Поздно уже голосовать. Давно всё решили
#6 #776390
>>776265
Попытался вот так подобрать, но он в конце на двух значениях зацикливается и не может точнее подобрать строку. Какие ещё варианты есть?
http://ideone.com/zyapfV
>>776391
#7 #776391
>>776390
ты ведь сказал, что не можешь менять а, а теперь он у тебя char[] вместо charЗВЕЗДА.
>>776392
#8 #776392
>>776391
Нет. Я не могу менять код. Могу только а менять
>>776431
#9 #776431
>>776392
Всё отбой. Не так понял условие. Не равно надо было, а не больше и не меньше. То есть просто вписать nan.
#10 #776462
А как можно узнать переопределена ли у объекта определенный метод? Допустим у меня есть объект ball и я хочу вызвать у него update.
>>776489>>776566
#11 #776489
>>776462
Чую, можно как-то через шаблоны сделать, но что мешает использовать статик каст?
http://ideone.com/7ZiMVY
#12 #776542
Для C++ есть нормальные фреймворки уровня Symphony, Django, Rails для веба, чтобы их еще кто-то использовал, ну и вообще экосистема для веб-разработки? Можно ли найти работу в таком направлении?
Можно ли найти работу фрилансером или на удаленке? Или весь с++ - это обязательно пот, прыщи и поедание мозолей?
Можно ли разрабатывать со скоростью, сравнимой с с#, java, python?
#13 #776555
>>776542
Нет Нет Нет Да Нет.
>>776611
#14 #776566
>>776462
SFINAE же.
11 Кб, 655x126
#15 #776567
Посаны, от чего говно на пиерелейтед может происходить? Я просто в ахуе. maxabs это double если че. Пытаюсь написать LU-разложение, вот полный код
http://pastebin.com/rMdPtG4j
>>776569
#16 #776569
>>776567
Блять, заменил abs на std::abs и заработало. Это вообще как?
>>776577
#17 #776577
>>776569
Тому что ты дубина стоеросовая. abs - это C-шный abs из <cstdlib>, который работает только с интами. Тебе нужно было fabs тогда использовать. А std::abs - это перегруженная функция из стандартной библиотеки C++.
>>776674>>776972
#18 #776611
>>776555
Я тебе ниверю
>>776542
Бамп
#19 #776667
Не тонем
#20 #776674
>>776577
А почему конпелятор ничего не говорит, когда я абсу дабл передаю?
>>777941
5497 Кб, Webm
#21 #776956
Парни, меня охуевшие хохлы выгнали к вам. Какие вопросы обычно задают на c++ собеседованиях? На стажера. Помогите спасите.
#22 #776966
Есть функции f(int&& n) и f(int n). Чем будет отличаться процесс "становления" n переданным числом при вызове f(4), например?
Мне интересно, что просходит с четверкой в памяти. Она сначала где-то создается и потом копируется или же адрес переменной становится адресом этой созданной четверки?
>>776970
#23 #776970
>>776966
Ну если этот инт создан на куче, то передается адрес наверное.
Если на стеке, то хз, мб тоже адрес.
>>776995
#24 #776972
>>776577
int abs(int x) {return x & 0x8fffffff;}
int abs(int x) {return x < 0 ? -x : x;}

Насколько первая реализация быстрее? Насколько вторая надёжней?
>>776974>>777005
#25 #776974
>>776972
Поправка - 0x7fffffff вместо 0x8fffffff.
#26 #776995
>>776970
инт - rvalue, какая тут куча
>>777013
#27 #777005
>>776972
первая не очень-то и быстрая. да еще и платформо-зависимая.
компилятор может очень хорошо оптимизировать ветвление, но с битовой операцией ничего не сделает.
>>777126
#28 #777013
>>776995
Точно не путаешь ниче?
>>777022
#29 #777022
>>777013
Всмысле?
f(4), 4 - rvalue
>>777042
#30 #777042
>>777022
Да да, я просто только первое предложение прочитал
#31 #777058
Крестаны, а вы (ну или знакомые ваши какие по плюсам) участвуете в хакатонах? Вопрос не в вашей любви к хакатонам, а есть ли вообще хакатоны по плюсам или используются плюсы на общих каких-нибудь?
не геймсджэмы
>>777062>>777122
#32 #777062
>>777058
а разве есть хакатоны по плюсам?
>>777084
#33 #777078
>>776542
нет
нет
да, но не в вебе
нет
смотря что но вообще нет, наверное
#34 #777084
>>777062
В этом и вопрос
#35 #777113
>>776956
в очко дашь или синглтон напишешь?
есть два каста...
>>777117
#36 #777117
>>777113
один static, другой dynamic
#37 #777122
>>777058

>хакатон


нужно что-то на чем можно быстро сделать прототип, кресты плохо подходят
#38 #777125
>>776542
В таких фреймворках для С++ нет большого смысла. Главная причина - как в забивании гвоздей микроскопом. Микроскоп (С++ разработчик) дорог, обращаться с ним надо аккуратно, дешевле нанять ораву джава-макак.

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

Таких разнообразных специальных штук в индустрии достаточно много при этом. Но обычно их на гитхабы не выкладывают, и мало кому о них наружу рассказывают. nginx - одно из приятных исключений, хотя начинался именно таким образом.
65 Кб, 814x399
#39 #777126
>>777005

> с битовой операцией ничего не сделает

>>777228>>777396
#40 #777226
>>776956
Каков размер указателя?
>>780561
#41 #777228
>>777126
откуда пикча?
>>777233
#42 #777233
>>777228
От Агнера.
>>777242
#43 #777242
>>777233
Дашь линк?
>>777244
#44 #777244
>>777242
"agner, C++" - первый результатт в любом поисковике.
Совсем охуели уже.
#45 #777396
>>777126
что можно сделать с a&b?
а картинка - классические законы де Моргана
>>777474
232 Кб, 560x319
#46 #777421
>>776185
Какая именно математика? То что нужно будет ебаться с гуем я догадывался.
>>777473
#47 #777473
>>777421
Тервер, статистика, функциональный анализ и чуть-чуть кибернетики. С гуем ебутся другие, не я.
#48 #777474
>>777396

>де Моргана


Откуда эта повадка называть все тавтологии высказываний законами де Моргана? Охуеть просто.
>>777494
#49 #777494
>>777474
я школьник, мне можно
#50 #777556
Вечер добрый.
Можно ли сие упростить?
http://ideone.com/7k8efB
>>777580
55 Кб, 455x455
#52 #777862
Программач! Такой вопрос. Я изучаю с++, на руказ книга ООП-С++ Р. Лафоре. Вроде бы всё годно, поясняется и разбираются примеры, но я чувствую себя в подвешенном состоянии, потом что тулком не разобрался с массивами и классами, и с прочей мелочью что является так сказать "костяком". Шапку треда пролистал, схоронил что-то и на меднях почитаю, но всё же, если не обращаться к книге, какие основные вещи я должен знать чтобы понимать базу в целом? Просто собираюсь менять работу и ловлю себя на мыслях что если мне зададаут какой-то вопрос, я обосрусь. Какие часто задаваемые вопросы, на собеседовании, мне стоит разобрать? И какие вопросы задавали вам, допустим, уровень "джуниор"?

пикрандом
#53 #777912
>>777862

> И какие вопросы задавали вам, допустим, уровень "джуниор"?


Зачем нужен виртуальный деструктор?
#54 #777941
>>776674
а с хуя ли он за тебя должен решать, что делать?
#55 #777942
>>777862
По собственному опыту, в большинстве контор на собеседованиях дают примеры кода на листке А4 распечатанные и просят рассказать, что будет в результате их выполнения. Блять эти примеры настолько мутные, что если встретится в обычной разработке - автор данного говна подлежит мучительной смерти Как правило на наследование и тд. В одной конторе даже была классика i++ + ++i
>>777961>>783188
#56 #777961
>>777942

> i++ + ++i


На современном процессоре a[i++] будет быстрее чем a[++i]
>>777968
#57 #777968
>>777961
На современном процессоре a[i++] и a[++i] будут выдавать разные результаты.
>>777978>>777981
#58 #777978
>>777968
Это любому понятно.
Но один и тот же цикл можно построить и с a[i++] и с a[++i].
И скорость будет разная из-за inter-dependency - процессор во втором случае не сможет так же эффективно распараллелить инкремент и доступ к памяти по указателю.
>>777992
#59 #777981
>>777968
А на старом — одинаковые, что ли?
>>777992>>777994
#60 #777992
>>777978
Ну-ка, дай статистику, что-то не особо верится.

>>777981
Ты не умеешь в иронию.
>>777994
#61 #777994
>>777981
На старом - одинаковые, потому что ни микроинструкций еще не было, ни микро-execution юнитов, ни умности процессора, который сам сейчас распараллеливает все что можно.

>>777992
Возьми померяй.
>>777995
#62 #777995
>>777994

>На старом - одинаковые


ШОК!!! семантика C++ зависит от процессора, в который компилируют код!
>>778011
#63 #778003
Нубовопрос: блок кода в лупе, она при каждой итерации "новый" или один и тот же?
for (int i=0;;i++){
int z = 5;
}
В момент, когда i станет равно единице и начнётся новый проход, будет ли существовать z?
Практически это ни на что не влияет, вроде бы, но интересно. (Ведь всё равно компилятор не даст использовать z до объявления, или именно потому и не даёт, что блок "новый"?)
>>778005>>778006
#64 #778005
>>778003
z будет создаваться и уничтожаться каждую итерацию. В случае с интом это не страшно, но с объектами так можно делать, только если на то есть причины.
>>778009>>778010
#65 #778006
>>778003
новый
чтоб был старый используй static или в новых версиях state
>>778010
#66 #778009
>>778005
Оптимизатор их будет создавать и уничтожать на стеке, поэтому пофиг
>>783200
#67 #778010
>>778005
>>778006
Спасибо.
#68 #778011
>>777995
Опечатка. Имелось в виду что разницы по скорости на старых CPU не будет.
#69 #778035
чем отличается i++ от ++i? в циклах и в арифметических выражениях.
>>778036>>778039
sage #70 #778036
>>778035
Это не ньюфаг-тред.
#71 #778039
>>778035
i++ делает инкремент и возвращает предыдущее значение.
++i делает инкремент и возвращает новое значение.
>>778041
#72 #778041
>>778039

> i++ делает инкремент и возвращает предыдущее значение.


В связи с этим название языка C++ весьма доставляет.
#73 #778122
Посоны, говно плюсо заебало сил нет. Ну какого хуя в 2016 я должен следить за тем чтобы каждая переменная была проинициализирована? В той же джаве при попытке использования неинициализированной переменной компилятор сразу посылает нахуй, а в классах по дефолту все инициализированно.
#74 #778141
>>778122
Во всех компиляторах стопицот ворнингов на эту тему.
>>778153
11 Кб, 776x355
#75 #778148
Подскажите пожалуйста нубу, можно ли как-то символ преобразовать в оператор?
Или каждый случай из 4 через кейс делать?
#76 #778153
>>778141

хуй там. если переменная в классе.
#77 #778154
СМЕРТЬ С++ - ЛОЗУНГ КАЖДОГО УВАЖАЮЩЕГО СЕБЯ С++ ПРОГРАММИСТА
>>778162
#78 #778155
>>778148
нет
#79 #778156
>>778148
У тебя несколько вариантов - использовать свитч или создать словарь "символ" - "операция". Операцию можешь сделать сам через классы или лямбды, либо использовать <functional>.
>>778163
#80 #778162
>>778154
мёртвое не может умереть
#81 #778163
>>778156
Нельзя. Это не скриптовый язык. Не путай его.
>>778166
#83 #778168
>>778166
Ты его не в оператор преобразовал, а по другому иф записал. Это не считается.
>>778175
#84 #778175
>>778166
Ну или так:
http://ideone.com/5MJVkM
Но с лябдами, конечно, красивше.

>>778168
А как ты собрался в скриптовых языках по-другому делать? Через exec что ли?
>>778176
#85 #778176
>>778175

> Через exec что ли?


Да
#86 #778203
У крестоблядей есть рекурсивные лямдбы?
>>778256
#87 #778219
Крестобляди, почему у вас функция, реализующая итеративный процесс, на самом деле реализует рекурсивный процесс?
>>778256>>779226
#88 #778256
>>778203
Ты об этом?
http://ideone.com/bK2sZW

>>778219
Пример в студию.
>>778263
#89 #778263
>>778256

>Ты об этом?


>http://ideone.com/bK2sZW


>std::function<long(int)> lambda = [&](int x) -> long


>;a;navbkag'na'bn;sajb ; lambda ->


А нормальный синтаксис не завезли?
>>779222
#90 #778264
Хочется повелосипедить что нибудь клиент-серверное прям на POSIX сокетах.
Подкиньте идей крестаны.
#91 #778268
>>778264
чат
#92 #778305
>>778264

>на POSIX сокетах


Бросай их, у них нет перспектив.
Бери STREAMS.
>>778338
#93 #778338
>>778305
Я хотел подрочить нижний уровень чтобы как глубже ПОНИМАТЬ многопоточность и работу с сетью как таковую.
>>778432
#94 #778339
>>778264
boost::asio
настольный теннис по udp, ftp сервак/клиент
#95 #778432
>>778338
Чтобы понимать работу с сетью читай канонического Стивенса.
Чтобы понимать многопоточность - исходники скедулеров 1:N, N:N и на закуску M:N, но это тебе рано. Почитай dz - https://habrahabr.ru/post/282037/, он конечно ебнулся со своей фантомасией, но исходники классических юникосов читал еще когда тебя не зачали и в базовых вещах разбирается хорошо, и объясняет их понятно.
>>778434>>778505
#96 #778433
Напомните, почему я должен дрочить c++ года 2 для более-менее нормального ориентирования, если я могу за 2 месяца потеребить java и в итоге получать столько же? При этом без байтоебства/кучи правил и исключений из правил/когда не знаешь, сколько будет размер инта.
>>778435
#97 #778434
>>778432

>Стивенса


Какого?
>>778435
#98 #778435
>>778434
Он один, Ричард W

>>778433
Если на твоем окрестном рынке труда так обстоит дело, то и выбирай джаву. На других рынках дело бывает что обстоит иначе.
>>778438
#99 #778438
>>778435
А книгу какую? У него 2 про сети
>>778443
#100 #778443
>>778438
Гораздо больше.
Но нельзя же так лениться.
Ты ведь сейчас попросишь ISBN, номера конкретных страниц, где скачать, и спросишь нет ли видео, а то читать скучно.
>>778449
1037 Кб, 1203x1693
#101 #778448
Java-плебей зашёл к вам в тред.

Очень хочется иногда побыть ближе к "железу" ПК, и максимально близко к работе с сетью. Взялся ещё за дискретную математику/алгоритмы/Куранта и Роббинса. В общем, хочу из обезьяны стать человеком.

Тут советовали выше Стивенса по сетям. Что скажете про Олифера - "Сети"?

Хочу что-то по архитектуре ПК, но не Таненбаума. Можно на английском. Желательно, чтобы книга дала базу, благодаря которой я смогу понимать ПРИНЦИП работы и смог самостоятельно читать и понимать, что такого в новеньком процессоре/видеокарте.

И по операционным системам реквестирую чего-нибудь.
>>778450>>778633
#102 #778449
>>778443

>Гораздо больше.


Нет. Только TCP/IP Illustrated и UNIX Network Programming
>>778461
#103 #778450
>>778448
Таненбаума
>>778461
#104 #778461
>>778449
Считаешь все тома Illustrated и UNP за одну книжку?
У них даже авторы не совпадают.

>>778450
Этого читать вообще не надо, ни о чем.
>>778464>>779051
#105 #778464
>>778461

>Считаешь все тома Illustrated и UNP за одну книжку?


Да. Т.к. читать по отдельности наверно нет смысла
>>778468
#106 #778468
>>778464
Многим ли оно надо, читать второй том иллюстраций, например?
>>778475
#107 #778475
>>778468
А я ебу? Я не читал. Поэтом у тебя и спросил какую книгу читать
#108 #778494
>>776956
Первый уровень:
Размер указателя.
Пример наследования. Мол что и в какой последовательности сработает.
Примеры кода. Нужно дать ответ что произойдёт.
Обычно все вопросы очень простые.

Второй уровень:
Включает в себя первый.
Скорость поиска в листе, в векторе, в отсортированных. И прочее развлекалово базовыми вещами связанными с алгоритмами и структурами.
Размер структуры. Тут соль в выравнивании.
Ещё больше говнокода.

Третий уровень:
Обычно всем похуй на первые два этапа.
Может выборочно что-то спросят. Больше всего любят выравнивание.
Нечто забавное, типа алгоритма одновременного лока двух мьютексов.
Всё опирается на проекты, где участвовал и что мутил.
Какие архитектурные решения выбирал и почему.

Тебе нужен самый первый уровень.
Да и в большинстве случаев всем похуй на результаты. Если ты джун, то твоя САМАЯ сильная сторона - умение решать проблемы самому.
#109 #778505
>>778432
Аноны, что тебе отвечали, это ния.
Спасибо, правда выглядит жестковато.
>>778509
147 Кб, 1043x722
#110 #778509
>>778505
Жестковато - это если бы тебя послали учиться не на книжках для старшеклассников средней умности, где грубые и упрощенные модели разжеваны до максимума на понятных примерах их реализации в простых как валенок системах уровня BSD 4.3, а послали бы изучать что-нибудь стоящее и работающее в реальной жизни - например, о многозадачности посоветовали бы понять как это работает в современенном оракле - и исследовать стетоскопом потому больше туда ничем не влезешь.
>>778515>>779018
20 Кб, 447x456
#111 #778515
>>778509
Но ведь POSIX... Сокеты...
>>778516
85 Кб, 1059x593
#112 #778516
>>778515

>Я хотел подрочить нижний уровень чтобы как глубже ПОНИМАТЬ многопоточность и работу с сетью как таковую.


>нижний уровень


>глубже ПОНИМАТЬ


>многопоточность

>>779018
sage #113 #778540
>>778122
А какого хуя мои программы должны делать лишнюю работу, зануляя память, только ради тебя — дауна?
>>778542
#114 #778542
>>778540
Охуенная оптимизация
2016 год напоминаю
>>778543
sage #115 #778543
>>778542
Это ответ, даун?
>>779022
#116 #778552
Бинарное дерево и запись его в файл.
Написал метод для реализации этой нехитрой задачи, но по итогам в файле остается только самый последний элемент.
В упор не вижу решения проблемы, помогите. Вот, собственно, сам метод, без дерева (там всё довольно стандартно).

https://ideone.com/FVFynY
>>778553>>778554
sage #117 #778553
>>778552
ofstream fout(fileName, ios::app);
sage #118 #778554
>>778552
Да и вообще, нафига при записи каждой ноды переоткрывать файл, лол.
sage #119 #778564
>>778122
Я тебе открою секрет: в плюсах всё всегда инициализируется.
#120 #778633
>>778448
"Архитектура компьютера и проектирование компьютерных систем" Дэвид А. Паттерсон, Джон Л. Хеннесси
>>778787
#121 #778706
Тупой вопрос. Решил перекатиться на Qt, однако есть пиздецкое опасение, что программы, сделанные на нём, будут требовать каких-нибудь экзотических библиотек для своей работы, которых у обычного пользователя может и не быть, и потому не хотелось бы обосраться при демонстрации новой вундервафли научнику/НАЧАЛЬНИКУ. Нужны ли для работы этого говна конечному пользователю всякие хитровыебанные библиотеки?
>>778707>>778718
#122 #778707
>>778706
Линкуй кутэ статически.
>>778709>>778719
#123 #778709
>>778707
Спасибо, ознакомлюсь.
#124 #778718
>>778706
у них сейчас есть утилиты windeploy
androuddeploy
которые кладут все нужные либы рядом с твоим exe.
Так что твои опасения напрасны
#125 #778719
>>778707
статическая линковка сейчас официальна разрешена только при купленой за деньги лицензией на Qt
>>781179
#126 #778787
>>778633
Окей, беру его на английском и эту(https://habrahabr.ru/post/259505/) книгу.
>>778827
#127 #778827
>>778787
Не читал книжку с хабры, но если она, как написано, дополняет Паттерсона и Хеннесси то лучше ее и читай сразу. Два раза читать одно и тоже бестолку, там довольно много схемотехники.
>>778830
#128 #778830
>>778827
Окей, тогда выберу что-то одно.
Ещё советуют понять:
Теорию автоматов
Электротехнику

Или это для вечных студентов-у-мамы-на-шее-сидящих?
>>778906
#129 #778906
>>778830
Теорию автоматов не надо, она сцуко сложная, хотя сам конечный автомат штука простая. Теория тебе может потребоваться только для таких нишевых занятий как разработка (а не использование) тулз для верификации программ и последующего сброса фрустраций путем травли хаскелистов и иже с ними, считающих что типы на что-то годны.
Конечные автоматы надо понимать и уметь строить (когда надо) и использовать (когда надо). В TCP Illustrated с автоматом состояний TCP разберись, с использованием epoll или IOCP программок понапиши.

Электротехника нужна если что-то паять собрался - но это проще аутсорснуть. Вот иметь некоторое представление о программировании FPGA, например - это полезно.
#130 #778989
>>778122
проиницилизировал тебе за щёку, проверяй
#131 #779018
>>778516
>>778509
Чет мне кажется ты выебщик простой.
Ты бы еще посоветовал тому анону почитать как ток в оптоволокне течет.
#132 #779022
>>778543
Твоя мамка даун
37 Кб, 1079x1020
#133 #779028
Я вчерашний ньюфаг, подскажите что не так?
Вроде, должно работать...
>>779034>>779052
#134 #779034
>>779028
Сообщения компилятора читаем?
Еще небось и поддержка c++11 не включена.
>>779035
41 Кб, 999x1040
#135 #779035
>>779034
Читаю, но не пойму. Пробовал так, не работает тоже.
>>779039>>779052
#136 #779039
>>779035
Ну написано же синим по белому - включи поддержку c++11.
>>779040
#137 #779040
>>779039
А какая версия С++ лучшая?
Спасибо.
>>779045>>779056
#138 #779045
>>779040
В с++11 больше фич, чем в обычном с++ (он же с++98 или с++03). В с++14 еще больше фич, чем в с++11, разница между с++11 и с++98 намного больше, чем между с++11 и с++14. Поэтому на твой выбор.
>>779052
#139 #779051
>>778461

>Таненбаума


>Этого читать вообще не надо, ни о чем.


Поехавший? Это вообще лучшее, что есть по операционным системам.
>>779085>>779110
#140 #779052
>>779045
Включил С++11, это работает: >>779035
А это нет: >>779028
Хотя пишу как по учебнику...
>>779069
#141 #779056
>>779040
Которая Java
60 Кб, 922x604
#142 #779058
И еще вопрос, в gcc нет компилятора с++14?
>>779062>>779117
#144 #779069
>>779052
Потому что читай блядь сообщения компилятора. Если не понимаешь - заноси в гуглтранслейт и читай.
>>779079
#145 #779079
>>779069
Всё понял, просто, я недавно начал изучать С++, спасибо.
#146 #779085
>>779051
Субъективно - нет, не лучшее. Это можно назвать словом "классика".
#147 #779110
>>779051
Лучшее что есть по операционнам системам - купить одноплатный арм, и попробовать написать ОС самому.
>>779114>>779697
#148 #779113
Юзает кто кодблокс? Никак не могу нагуглить как включить С++14. >>779062
>>779115
#149 #779114
>>779110

>купить одноплатный арм, и попробовать написать ОС самому.


Пффф, это для слабаков. Я ядро для x86_64 писал
#150 #779115
>>779113
Там есть вкладка для ввода произвольных параметров компилятора
>>779117
#151 #779116
Дайте ссылку на шапку. Хочу посмотреть, как такая разметка делается.
>>779225
#152 #779117
>>779115
Не могу понять всё равно, как я понял, это тут >>779058
?
Я гуглил, но не нашёл, помогите?
>>779120
#153 #779120
>>779117
Ты слепой бля? Ты хоть что-то пробуешь сам сделать? Или зовёшь Сычева-компьютерщика, когда у тебя иконка скайпа с рабочего стола пропадает? Ты как работать собрался?
OTHER COMPILER OPTIONS
>>779121
#154 #779121
>>779120
Хм... Написал туда -std=c++14 и заработало, я молодец. И тебе спасибо за помощь.
55 Кб, 710x556
#155 #779221
>>777862

>на меднях


>на меднях

#156 #779222
>>778263
auto lambda = ... допустимо, если тебе не принципиально, чтобы было std::function, а подойдет любой Callable.
>>779230
#158 #779226
>>778219
Потому что лямбды - сахар над классами, которые сахар над структурами, которые ... Борщ утри, короче.
#159 #779230
>>779222
С auto ты рекурсию не построишь.
>>779248
#160 #779243
Поясните за вот это:

auto foo() -> foo_type {..}

Зачем так выебываться, если можно foo_type foo(){...}?
>>779259>>779274
#161 #779248
>>779230
Без особого труда можно на constexpr-машине сделать, чтобы внутри лямбды был известен тип, которому она присваивается. Если интересно, в понедельник могу показать в общих чертах.
>>779257
#162 #779257
>>779248
Пили
>>781303
#163 #779259
>>779243
Где проще найти имя функции и/или тип возвращаемого значения?

auto foo(wadjalw, dawjawd, gjgjdfklgldf) -> dawjhdahwduahwiduahwdiuawd;
auto bar(dawdgg, dfgdfgdfgdf) -> awdjdlwkaawd;
auto baz(ehuirygdfgd, sdfokspdfosf); -> wadjawdjawdawdiawddawuihdaiwdhaiuwdh;

dawjhdahwduahwiduahwdiuawd foo(wadjalw, dawjawd, gjgjdfklgldf);
awdjdlwkaawd bar(dawdgg, dfgdfgdfgdf);
wadjawdjawdawdiawddawuihdaiwdhaiuwdh baz(ehuirygdfgd, sdfokspdfosf);
#164 #779274
>>779243
В первую очередь для лямбд.
#165 #779336
Почему в С++ не советуют делать абстрактные классы, содержащие собственные члены?
Аргументация строится на том, что, мол, придется вызывать конструктор родителя. И в чем проблема? Что на джаве, что на пхп это нормальная практика.

Например, что плохого в:

class A
{
int a, b;

public:
A(int a, int b) : a(a), b(b) {}
virtual void f() = 0;
};

class B : public A
{
int c, d;

public:
B(int a, int b, int c, int d) : A(a, b), c(c), d(d) {}
};

class C : public B
{
public:
C(int a, int b, int c, int d) : B(a, b, c, d) {}
void f() {}
};
#165 #779336
Почему в С++ не советуют делать абстрактные классы, содержащие собственные члены?
Аргументация строится на том, что, мол, придется вызывать конструктор родителя. И в чем проблема? Что на джаве, что на пхп это нормальная практика.

Например, что плохого в:

class A
{
int a, b;

public:
A(int a, int b) : a(a), b(b) {}
virtual void f() = 0;
};

class B : public A
{
int c, d;

public:
B(int a, int b, int c, int d) : A(a, b), c(c), d(d) {}
};

class C : public B
{
public:
C(int a, int b, int c, int d) : B(a, b, c, d) {}
void f() {}
};
>>779340>>779782
#166 #779340
>>779336
1) В том, что тебе придётся вызывать всю эту иерархию. В жавах/пхп тормозов и без того хватает.
2) Как думаешь, почему абстрактные классы так же называют интерфейсами? Потому что это затычка с методами, не больше.

Если тебе похуй на это и вопрос о перформансе до миллисекунд не стоит – пиши так, чо.
#167 #779391
Объясните плокс:

class Class{
friend foo(){}
}

friend foo();

1) Зачем вообще есть возможность определять функцию не член в пределах определения класса?
2) Почему это я должен еще и объявлять её в outer scope?
3) Почему в этом языке повсюду вот такой пиздец?
>>779399>>780504
#168 #779399
>>779391
Дружественной может быть не только функция но и класс/структура.
>>779936
115 Кб, 957x416
#169 #779520
Объясните, почему сохраненное значение станет неверным? Итераторы - это же просто указатели. End сохранен и не меняется, если вектор увеличивается, то первые элементы до end() остаются на своих местах, у них те же самые адреса, поэтому условие begin() == end() станет ложным.
#170 #779559
>>779520

>условие begin() == end() станет ложным.


там beg и end сравниваются
>>779750
#171 #779645
>>779520
Что за шрифт?
#172 #779697
>>779110
И велосипедить давно известные алгоритмы.
#173 #779750
>>779559
И что? Все равно будет так, как я сказал.
>>779754
#174 #779754
>>779520
>>779750
http://en.cppreference.com/w/cpp/container/vector/push_back

If the new size() is greater than capacity() then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is invalidated.
#175 #779782
>>779336
Кто не советует? Что за дичь. Стандартная практика при наследовании реализации.
>>779793
#176 #779793
>>779782
C++ Core Guidlines открой хотя бы прежде чем писать, дурашка.
>>780494
#177 #779936
>>779399
И что? Ни на один вопрос этот ответ не отвечает
#178 #780037
>>779520
Некоторые контейнеры под свои элементы выделяют память. Если такому не хватает чтоб запихнуть значение, то он старую удаляет, и выделяет новый участок, побольше раза в два. Новый участок может располагаться совсем в другом месте.
#179 #780237
>>776344 (OP)
Пытаюсь рисовать кое-что на Qt, наследуюсь от QGraphicsView, делаю override paintEvent, вызываю в нем paintEvent базового класса и кое-что свое.
Проблема в том, что paintEvent вызывется, но то, что в нем написано не рисуется. Точнее рисуется, но при каких-то очень конкретных случаях.
#180 #780453
Привет сиплюсплюсцы.

Может ли CodeLite автокомплитить названия хедеров?
И как сделать так, чтобы обычный автокомплит работал не через раз?

Вроде норм ИДЕ, но автокомплит из коробки там пиздец.
>>780462
#181 #780462
>>780453

>И как сделать так, чтобы обычный автокомплит работал не через раз?


Взять нормальную IDE/прописать пути хидеров руками если есть такая возможность.
#182 #780494
>>779793
В факе isocpp прямо в самом начале поясняется, что они имеют в виду под "something is evil".
>>780499
#183 #780499
>>780494
Не знаю где ты тут
http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-abstract
увидел "что-то злое". Просто есть рекомендация не стрелять себе по ногам от создателей языка – не стоит просто так класть на это хуй.
>>780507
#184 #780504
>>779391
1. Самое очевидное применение - когда тебе нужно, скажем, реализовать +, чтобы было можно писать и mamka+1, и 1+mamka. Ты не можешь сделать operator+ встроенным, потому что тогда левым операндом будет допустима только мамка. Если определишь снаружи, то увеличится связанность - хуй пойми кто, не имеющий отношения к мамке, сможет вызвать твой оператор, а когда ты поменяешь что-нибудь в мамке, то ты можешь забыть изменить и этот оператор, ибо его текст где-то в другом месте и без ссылок на мамок в общем случае. Делая friend-определение, ты убиваешь сразу двух зайцев: текст твоего стороннего оператора фактически все равно внутри класса, а вызвать его можно только через поиск Кенига, когда один из аргументов будет мамкой, поэтому он не сможет вступить в конфликт с какими-то другими операторами (особенно актуально для шаблонов). Есть и другие сценарии, например, гугли "неконстантные константные выражения".
2. Ты не должен объявлять, она сама неявно объявится, но найдется только через поиск Кенига. Если тебе понадобилось ее объявить, то тебе и не нужно friend-определение тогда, ибо ты все профиты потеряешь.
3. Потому что тебе дали вместо молотка ящик с инструментами, и ты платишь необходимостью изучать сценарии их использования за гибкость.
#185 #780507
>>780499
Не в том, а в более старом. https://isocpp.org/wiki/faq/big-picture#defn-evil
#186 #780561
>>777226
Зависит от платформы, в большинстве случаев это 4 байта. Я не обосрался?
>>780571
#187 #780562
Ананасы, пытаюсь запустить кое-какой проект в Qt, но вылезает рантайм ошибка. Дебагер дошел до хэдера "stl_vector.h", operator[]. Не могу понять, что не так?

http://pastebin.com/c2L6bnit
#188 #780571
>>780561
Почти. Зависит от платформы, да. На x86 - 32 бита, на x86-64 - 64 бита.
>>783180
#189 #780573
Аноны, вот создаю я чистый проект в visual studio. Создаю там main.cpp, определяю void main() {}. Делаю include <iostream> - и у меня 500 ошибок при компиляции.
Правильно ли я понимаю, что <iostream> - это фактически хедер к библиотеке? И нужно еще как-то подключить уже скомпилированную библиотеку?
>>780578
121 Кб, 1258x778
#190 #780575
Ебаный в рот, как пользоваться отладчиком в QT Creator? Когда ставлю точку останова и запускаю отладку, почему-то программа вместо пошагового выполнения приходит сразу к концу и печатает ответ. А ебаная студия вообще перестала отображать значения переменных и их изменение и к тому же отображает не все переменные. Посоветуйте отладчик, а то все какое-то ебаное говно кроме олли дебагера. Но мне сейчас нужен не такой низкий уровень.
>>780577>>781283
#191 #780577
>>780575
Алсо, хочу отладчик высокого уровня с возможностью смотреть в ассемблер. Есть такое под винду?
>>780586
#192 #780578
>>780573
Давай свой код, посмотрим.
>>780582
23 Кб, 676x630
#193 #780582
>>780591
#194 #780586
>>780577
с сорцами прога? тогда и vs сойдет, и windbg
>>780587
#195 #780587
>>780586
С сорцами, но vs глючит так, как я описал. Некорректно отображает значения переменных, показывает не все локальные переменные.
>>781180
25 Кб, 805x488
#196 #780590
Как определить, сколько слов занимает функция? Только при помощи дизассемблеров?
>>781281
#197 #780591
>>780582
У тебя походу либы где-то проебались проверь есть ли они.
>>780609
#198 #780609
>>780591
Пишет fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory
Погуглил - говорят баг студии, неправильные пути.
За что этим уебкам только платят по 150к$.
>>780612
#199 #780612
>>780609
Ліл! Посмотри нет ли у тебя в пути до твоей студии не латинских символов.
>>780632
#200 #780632
>>780612
Нет, конечно.
Проблема не только у меня. В студийном батнике определены неправильные пути к ucrt (C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\).
Сейчас буду думать как менее костыльно пофиксить.
Еще ставил ее 8 часов с тремя ребутами. 2 раза делал repair, сукпздц.
>>780643
#201 #780643
>>780632
Качал с офф сайта?
>>780672
#202 #780672
>>780643
С рутрекера оригинальный msdn-образ прошки с зашитым ключом.
После установки вылезла ошибка, что не получилось накатить Update 2. Полез на оф. сайт, попробовал iso- и web-версии, делал repair. Кое-как до рабочего состояния довел. В общем, наебался знатно.
Когда гуглил ошибки, ебанаты с саппорта советовали "ставить на чистую систему", лел. То есть я должен переустановить винду, чтобы поставить ide?
По сравнению с JetBrains IDEA, которая ставится за 3 минуты и работает идеально, это просто ад. Пожелал рака жопы детям разработчиков.
#203 #780682
>>780672
Попробуй снести текущую среду и дотнет, а потом установить официальную комюнити 2015, все должно работать если ты совсем не ушатал все. На крайний случай можешь обмазатся Embarcadero Rad хуемое
>>780684>>780687
#204 #780684
>>780682
Или тому подобным говном
#205 #780686
>>780672
Ты какое-то тупое уёбище, качаешь IDE, ставшую бесплатной (платная только для крупных ынтерпрайзов и отличается интеграцией с йоба-сервисами мса) и ещё жалуешься на хуёвую работу. Почему я использую её начиная с 2008-й версии и не разу не ебался с установкой?

Криворукий наверн.
>>780689
#206 #780687
>>780682
Еще часов 5 тратить просто нереально.
Плюс я уже нашел решение. В макросах прописана версия ucrt 10240, а у меня стоит 10150. Попробую обновиться.
#207 #780689
>>780686
В чем твоя охуительность? Что прожал несколько кнопок? Я тоже их прожал и получил пердольку. Тут чисто везение.
>>780709
#208 #780696
>>780672

>То есть я должен переустановить винду, чтобы поставить ide?


Да. Это спермоособенности разработки. Советую удалить все компоненты .net из систему, все c++ redistributable и попробовать снова. Все кто хвалят установщик студии итт спермохлебы.
>>780709
#209 #780709
>>780689
В том что я не жалуюсь на пердолинг, который сделал себе сам скачав хуиту с рутрекера.
>>780696
Так там никаких аналогов нормальной фс и менеджера пакетов нету, щито поделать.
#210 #780721
Сижу себе, пишу прогу на Qt. Добавил новый код, работает. Добавил еще - рантайм ошибка. Включаю дебаггер, а он мне указывает на код, который до этого работал. Никаким образом новый код не мог повлиять на него. Ну че за хуйня, а?
>>780724>>780727
9 Кб, 184x184
#211 #780724
>>780721
enjoy your c++
#212 #780727
>>780721
Пытаюсь найти баг, кстати, уже третий день. Самое худшее то, что спросить некого - никакой психически здоровый человек не будет дебажить мой проект за просто так.
>>780729>>780759
#213 #780729
>>780727
git bisect по идее пойдет.
То есть берешь половину нового кода, смотришь, есть ли баг. И так далее.
#214 #780759
>>780727
Скопировал весь код в новый проект. Заработало. Ахуенно, да?
>>780831
#215 #780831
>>780759

>Скопировал весь код в новый проект. Заработало. Ахуенно, да?


Это называется "криво собранно". Чаще делай clean.
>>780836
#216 #780836
>>780831
10 раз clean делал и пересобирал.
#217 #780972
супец братья.
хочу подписать/портировать на цпп под андройд свои ништяки.
слышал о ндк. и это все что я о ней слышал дайт гайд по еклипсу как отстроить его в андроидцпп или основы работы с ндк за 15 минут.
21 Кб, 604x77
#218 #781005
Поясните, как сделать проверку какой тип переменной введён?
Я нуб, но в задаче это требуется.
>>781010>>781111
#219 #781010
>>781005
в строковом - это "сто пятьдесят семь"? тогда парсер пиши
>>781114
#220 #781111
>>781005
Перегрузка методов
Шаблоны
>>781114
#221 #781114
>>781111
>>781010
Ну, с таким я еще не сталкивался. Потом тогда сделаю.
У меня была только 1 мысль - в стринги писать числа, а потом сравнивать их. Но тут двузначные числа уже не подойдут, поэтому пока отброшу эту задачку.
>>781323
#222 #781179
>>778719
Я разрешаю, линкуй. Ток мамке не говори.
#223 #781180
>>780587
Собери дебаг версию даун
#224 #781281
>>780590
clan/g++++++ -S -c your_shit.cpp ?
#225 #781283
>>780575
а ты оптимизации вырубал? если нет, то катись-вырубай
#226 #781303
>>779257
Прикрутить библиотеку с b.atch.se и дальше примерно вот так:
http://pastebin.com/6zBNDKrV
#227 #781323
>>781114
Перегрузка на самом деле очень легкая концепция. Попробуй посмотреть пример, сразу все поймешь.
>>781337
#228 #781337
>>781323

>очень легкая концепция


template <typename T> void f (T);
template <> void f <int> (int);
void f (int);
void f (signed);
void f (const int);
void f (int) noexcept;
[[deprecated]] void f (int);
Одно только разъяснение нубу, как и почему будет разрешаться для этих объявлений перегрузка f (1), займет несколько дней. И это только самое очевидное.
>>781402>>781795
#229 #781366
Поясните за HyperThreading. Правильно ли я понимаю, что мы не можем просто нагрузить виртуальные потоки? Как правильно их нагружать?
>>782625
#230 #781402
>>781337
У Страуструпа описано
>>781680
#231 #781506
while(cin>>a){...}

>> возвращает ссылку на cin, а ссылочный тип не может быть использован в condition, так как не существует нулевой ссылки.



Но код почему-то работает. Где здесь подвох?
>>781513>>781523
#232 #781513
>>781506
Потому, что ты не туда смотришь.
Смотри оператор >>
Он возвращает bool
>>781522>>781685
#233 #781522
>>781513
Точнее нихуя не так.
#234 #781523
>>781506
Возвращается istream, который потом конвертится в bool. Как он это делает, написано, например, тут:
http://www.cplusplus.com/reference/ios/ios/operator_bool/
>>781532
#235 #781532
>>781523
Функция bool вызывается ватоматически в bool контекстах?
#236 #781536
>>781532
Ну while понимает только булевы, поэтому и приводит выражение в скобках к bool автоматически, да.
#237 #781539
>>781532
Да, точно.

Блять, как мне это надоело. Пишешь такой код, а тут тебе при компилции деляют вызов на функцию, о которой ты ничего не знаешь.

Это просто пиздец, где эта ваша программист сам всем управляет, вот тебе ящик вместо инструментов, а, пидоры?
Блять как же у меня жопу рвет от этого
>>781549
#239 #781549
>>781539
В смысле? А как ты собираешься привести объект к bool без помощи явно указанного оператора? По-моему, все очевидно. Если ты не знаешь фишки языка, то это уже твои проблемы. Иди пиши на брейнфаке, там все предельно ясно.
>>781560
#240 #781560
>>781549
Нет, не очевидно. Надо убрать в принципе все случаи неявной хуйни, пусть java этим занимается. Если не знать о таких случаях, то как дебажить вот это?
>>781566>>781687
#241 #781566
>>781560
Это не неявная хуйня, а как раз-таки наоборот. Если у тебя не определен оператор перевода в bool, то компилятор выдаст ошибку.
#242 #781680
>>781402
Я прочитал Страуструпа в свое время на каникулах примерно за две недели. Но тогда я был не совсем нуб уже, так что, вероятно, нужно исходить примерно из месяца. А без нормального знания ангельского и того больше, ибо русское издание есть дрисня, которую невозможно читать.
#243 #781685
>>781513
Да ты охуел, что ты несешь вообще?
>>781532
Не во всех. Есть несколько явно описанных контекстов (условия циклов и if, static_assert и еще что-то), в которых происходит т.н. контекстуальное преобразование в bool. Оно легально даже если ты сделаешь explicit оператор преобразования, ибо формализуется так: если корректно написать bool foo (выражение), то конверсия из выражения нормально пройдет, с соответствующим результатом. Сделано такое для удобства - когда ты пишешь выражение в условии, то никакой арифметики рядом нет, поэтому запутаться трудно и неявность только помогает.
#244 #781687
>>781560
Ну тогда первым делом иди менять a+b на ::operator+ (::a,::b); а то вдруг компилятор не угадает, лол.
>>781774>>781777
170 Кб, 960x960
#245 #781698
Сап, аноны, посоветуйте хороший сборник библиотек по математике на завтра. Нужен МАКСИМАЛЬНО полный до завтра, а то меня в гугле забанили. Ну и заранее спасибо.
>>781701>>781704
#246 #781701
>>781698
Блжад, так жмет срок, что >завтра встречается чаще чем стоило бы.
#248 #781708
>>781704
Спасибо, сойдет.
#249 #781762
Cап, посоны. Недавно начал учить Кьют, решил сделать видеоплеер. Вопрос не по нему, а по самой структуре проги: как считаете, юзать Qt Designer и переносить слоты для созданных там кнопок в MainWindow - зашквар? Если нет, то можно ли все кнопки кидать в MainWindow или разумнее сделать разделение по классам?
>>784171
#250 #781774
>>781687
зачем у параметров ::?
#251 #781775
>>781704

>Половина Boost, причем не только в math



Как предсказуемо
>>781857
#252 #781777
>>781687
Во, идеально
#253 #781795
>>781337
Добавь сюда type promotion и narrowing и настанет "enjoy your cpp". Вообще, это дрисня на мой взгляд. Надо добавить ключ компилятора, который нахуй отключает всю эту overloading resolution поеботу, оставляя только exact match rule. Все равно в реальном коде этой "удобной" сранью никто не пользуется. По-хорошему еще и implicit type convertion нужно выпилить целиком нахуй, оставив только bool contexted
>>782047
#254 #781850
Господа, два вопросика:
Qt без его покупки позволяет собрать в динамические библиотеки не весь код, а только используемые классы и их зависимости? Если да, то как? Ну, чтобы helloworld не весил мегабайты.
И другой вопрос: с C++ вообще реально устроиться на удаленку/во фриланс, пойти там в какую-нибудь компанию писать энтерпрайзный код, бэкенд к каким-нибудь современным веб-приложениям, еще чему-то такому? Или какие перспективы вообще?
>>781856>>781913
#255 #781856
>>781850
http://doc.qt.io/qt-5/build-sources.html - вся информация что и как собирать, однако насколько я помню ещё в 4-й куте меньше 4 мб даже вырезав всё получить было нельзя.
Алсо, есть различные компрессоры/пакеры.

Можно, но только если у тебя есть хороший опыт – это обязательно в любой удалёнке, тем более в плюсах.
Фриланс – нет. Хотя изредка на апворке бывают заказы на гуйню, но едва ли так можно более менее зарабатывать.

Перспективы – хайлоад, различный риалтайм (вроде игрушек и компуктерного зрения), низкоуровенные библиотеки, иногда десктоп и, конечно же, поддержка легаси вот уж где работа никогда не закончится.
#256 #781857
>>781775
У плюсов есть две главные библиотеки – буст с костылями языка и кучей неведомой хуйни и Qt на все случаи жизни.
#257 #781890
>>776344 (OP)
Такое дело, я студент-инженер, специальность: "электроника и автоматика физических установок".
У нас на первом курсе был С и С++, с достаточно слабыми лекциями и зачеты просто так проставили. Вот сейчас я понял, что если что и знал по С++, то забыл.
Но зато впереди есть 2 летних месяца и у меня возникла идея подучить кресты, точнее я выбираю как бы продуктивнее провести время. По специальности, как я понял, я буду сталкиваться с микроконтроллерами, электронными схемами, если честно не особо представляю суть работы.
Собственно вопрос, насколько инженеру-электронщику актуален С++, на каком уровне желательно его знать, на что стоит обратить внимание? Понимаю, что речь не идет о том, чтобы стать нормальным программистом за 2 месяца, только выучить основы для дальнейшего развития. Может имеет смысл ограничиться языком С или посмотреть в сторону питона, скажем?
>>781916>>782631
#258 #781913
>>781850
в HFT активно берут на удаленку. и даже парт тайм. так что можно в несколько контор устроиться. но там требуют очень хороший уровень + знания трейдинга
#259 #781916
>>781890
в электротехе с++ ограничено применим. лучше уж си. питон вообще для пердоликов с адруиной
>>782906
#260 #782047
>>781795
Тащемта, это легко сделать. Пишешь шаблонную обертку, перегружаешь все операторы строго для однотипных операндов, преобразования не реализуешь. И заменяешь везде int на Wrapper <int> etc. Из-за инлайновости никакой деградации не будет, текста прибавится ровно на джва символа для каждого литерала, если использовать auto и пользовательские литералы, которые по 1_w будут генерировать такие обертки.
>>782106
#261 #782106
>>782047
Мне кажется, что clang форкнуть будет не намного сложнее.
#262 #782119
http://pastebin.com/79hB14E1

Допустим, есть поток CheckDataFromServer, который регулярно обновляет веб-страницу, пока она не даст мне нужную информацию.

Если 30 секунд никакой информации не выдаётся, прекратить работу потока. При этом основной поток останавливать нельзя.

Насколько нормально создавать отдельный поток-супервизор, который будет ждать эти 30 секунд? Есть ли тактика получше?

std::thread не предлагать, ибо Visual Studio 2010 и C++11 тут поддерживается лишь частично.
#263 #782127
>>782119
Нормально, если ожидание сделано нормальным, неактивным, а не через while (!readData()).
>>782137
#264 #782137
>>782127
Я же скинул пасту. Через WaitForSingleObject, вызванного из потока-супервизора.
>>782228
#265 #782198
>>782119
boost::thread
>>782229
#266 #782228
>>782137
Я не силен в WinApi, но рискну предположить, что специально заточенный под ожидание вызов оптимизирован до минимизации фоновой нагрузки на этот поток. Так что норм, по идее.
#267 #782229
>>782198
boost::boost
17 Кб, 404x399
#268 #782302
Помогите умственно отсталому.
Не могу считать символ с клавиатуры. Необходимо считать нажатие управляющих клавиш, а именно стрелочек.

int a = 0;
a = getch();
cout << a;

Раньше давно, я так и делал и получал 72, 75, 77 и 80. Сейчас же мне MSVS 2010 выводит 244 для всех четырех стрелочек?
ЧЯДНТ?
#269 #782308
>>782302
Стандарт не гарантирует, что стрелочки и прочая хуйня влезут в char, они не из базового набора. Поэтому ты получаешь implementation defined работу с консолью, и студия не обязана, вообще говоря, даже сохранять поведение в разных версиях, не говоря уже о совместимости с *nix.
>>782312
#270 #782312
>>782308
Прочел что
"При чтении функциональной клавиши или клавиши со стрелкой каждая функция должна вызываться дважды"
Видимо в этом и загвоздка. Вопрос, как мне быть в данном случае?
#271 #782321
>>782302
#define IsKeyPressed(KeyCode) (GetAsyncKeyState(KeyCode) & 0x8000)

bool IsLeftPressed()
{
return IsKeyPressed(VK_LEFT);
}

bool IsRightPressed()
{
return IsKeyPressed(VK_RIGHT);
}

Ну ты понял.
>>782328
#272 #782328
>>782321
Я так понимаю это win API? Я его еще не пробовал.
Приложение консольное.
>>782356
#273 #782356
>>782328
Это лишь функции для опроса клавиатуры, в консольком тоже будут работать.

Всё, что тебе нужно знать - это коды клавиш https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx и функцию GetAsyncKeyState() https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx .
>>782362
#274 #782358
>>782302
Костыли и быдлокод
char a;
while(a = getch())
{
cout << (int)a << endl;
}
Но работает.
>>782362
#275 #782362
>>782356
Спасибо, прочту. А то мой вариант >>782358 ужасен.
#276 #782486
Делаю что-то вроде ежедневника в Qt. Нужно сохранять и считывать текстовые данные из файла. fstream ведь не подойдет, да? Нужно будет считывать и записывать данные в определенном заголовке (позиции), и этот самый поиск нужного заголовка, как я понимаю, будет занимать достаточное кол-во времени. Есть какие-нибудь либы?
#277 #782487
>>782486
Пример, чтоб у вас появилось представление о чем я говорю:

example.dat

2016 : 6 : 28
-тут
-много
-текста


2016 : 6 : 28
-тут
-тоже
#278 #782489
>>782486
Что мешает хранить в том же или соседнем файле инфу о записях?
357 Кб, 454x603
#279 #782494
>>782486

> считывать текстовые данные из файла. fstream ведь не подойдет, да?



Братишка, нахуй тебе этот пердолинг, если в Qt есть sqlite?
>>782502
#280 #782502
>>782494
что-то я не подумал про базы данных
#281 #782528
Аноны, хочу поставить VS 2015, но установщик выдаёт сообщение "Для указанной программы требуется более поздняя версия windows". Неужели на семёрку не ставится?
>>782529
#282 #782529
>>782528
SP1 надо.
>>782533
32 Кб, 598x234
#283 #782533
>>782529
Ну как бы он и стоит. Что не так?
>>782547>>782551
#284 #782547
>>782533
бамп, аноны, как поставить? удалил 2013ю, хочу 2015ю, но тут такая ерунда, в гугле ничего подобного не заметил
>>782600
#285 #782551
>>782533
Значит моар обнов надо. Я ставил на обновленную до упора, все было норм.
>>782633
#286 #782600
>>782547
Обновления качай, тебе же сказали.
>>782633
#287 #782609
Какую книгу почитать, чтобы начать понимать и оперировать шаблонами с большей уверенностью чем с базовыми знаниями после прочтения страуструпа/липпмана/статей на cppreference? Таки А.Александреску?
>>782612>>782623
#288 #782612
>>782609
Разве что если хочешь бесцельно вымазываться шаблонами ради шаблонов. В остальных ситуациях любая из перечисленных тобой книжек даёт знния для 99% жизненных случаев.
>>782617
#289 #782617
>>782612
Александреска в том числе?
Хочу блять наконец-то не только понимать как работают enable_if и прочая муть, а и понимать, когда это полезно использовать. Чтобы метапрограммирование и SFINAE не были для меня умными словами из википедии.
#290 #782623
>>782609
Бля, ну в шапке же все написано. Вандевурд-Джоссатис - для понимания механизма и обхода подводных камней. Александреску - для применения в проектировании. Абрахамс-Гуртовой - для метапрограммирования.
#291 #782625
>>781366
Хули вы отвечаете дебилам, которые не могут установить студию. Лучше помогите мне.
#292 #782629
#293 #782631
>>781890
4to tebe meshaet vyuchit' vse tri yazyka? ili ty otstaly?
>>782906
#294 #782633
>>782551
>>782600
Только что накатил обновления - такая ж фигня
>>782635>>782640
#295 #782635
>>782633
поставь уже десятку и съеби
>>782640
#296 #782640
>>782635
Любишь бэкдоры?
>>782633
Хм. Заскринь, что конкретно пишет и на каком этапе установки.
>>782643
#297 #782643
>>782640

> Любишь бэкдоры?


а как будто семёрка не дырявая? и как будто вместе с обновлениями для неё нельзя притащить всё тоже самое говно, что есть на десятке? лоллирую просто с тебя
>>782662>>782665
#298 #782662
>>782643

> и как будто вместе с обновлениями для неё нельзя притащить всё тоже самое говно, что есть на десятке?


У даунов с автоматической установкой обновлений - можно. Остальные смотрят описание обновлений в MSDN и выбирают, что ставить.
#299 #782665
>>782643
А кого ебут потенциальные возможности? Факт, что десятка была уличена в посылании телеметрии, а с семеркой прецедентов не было. Если будут - придется валить и с нее, а пока выбор для меня очевиден. Алсо, телеметрия это еще хуйня, а вот та же пиратская студия на десятке может внезапно выпилиться вместе с игорами, в рамках борьбы с пиратством.
>>782679>>782701
#300 #782679
>>782665
Телеметрия в семерке есть, но легко отключается, достаточно удалить/не останавливать лишь несколько обновлений:
https://blog.kplus.pro/adm/windows-7-8-disable-telemetry.html
>>782716
#301 #782698
Спешите видеть, спермобляди спорят, какой сорт спермы вкуснее.
Посоны, оффтоп же. Тем более, с точки зрения c++ *nix куда как лучше.
Qt #302 #782700
Хелп, анон. Плюсы учу давно, вроде бы кое-что знаю уже. Решил посмотреть, что за такая популярная вещь Qt. Где можно почитать нормальные гайды по этой теме? Документацию открывал, но она такая обширная, что прочитать ее всю возможным не представляется.
Там есть визуальная среда разработки, как в Borland Builder(возможность размещать кнопочки, поля ввода, итд)?
И есть ли там возможность писать программы с эффектами(как например в ворде 13, там все плавно переходит)? А то в Builderе UI получается грубоватый и без всяких красивых эффектов, которые есть в современных программах.
>>782783
#303 #782701
>>782665
Зачем тебе пиратская студия, если ее бесплатно дают?
>>782713
#304 #782713
>>782701
Плагины только для полной версии, не? И еще что-то было, типа code coverage. Так-то я никогда бесплатной не пользовался, у меня честная Enterprise.
>>782737
#305 #782716
>>782679
Какой пафосный и самолюбивый скриптеныш, лол.
#306 #782737
>>782713
На Community плагины ставятся.
>>782751
#307 #782751
>>782737
Видимо, это переиграли в 2015, да.
#308 #782783
>>782700
гугли макса шлее
#309 #782906
>>781916
Ну а автоматика, там же по-любому программировать на чем то надо? Или расчет в matlab-е, а потом на типовых элементах собирать схему?
>>782631
Nemnozko
>>784797
#310 #782918
Почему после удаления объекта я всё ещё могу получить доступ к его методам через указатель?
>>782923>>782999
#311 #782923
>>782918
Потому что память не забивается тут же нулями, а просто помечается как свободная.
>>782925
#312 #782925
>>782923
Ты не понял вопроса. Я спрашиваю не "почему я не могу", а "ЗА ЧТО, СУКА!"
Почему бы не запретить это компулятором? Просто это не безопасно, лезть в память, которая уже свободна.
Я себе пару раз стрельнул в ногу.
#313 #782928
Хай. В следующем семестре курсовая и тема - обработка звука. Нужно записывать, резать, сшивать звуковые дорожки и всячески их редактировать на свое усмотрение.
Сейчас хочу определиться с библиотекой(ми).
Думаю о DirectSound. Что можете о ней сказать?
В общем прошу советов и чтива на лето по этой теме.
>>782945
#314 #782945
>>782928
Нифига ты ответственный. С лета готовиться к следующему семестру.
>>782947
#315 #782947
>>782945
почему бы и нет, если я нарыл методы.
>>782958
#316 #782958
>>782947
А как же распечатать шпоры в последнюю ночь перед экзаменом? В нас пропал дух авантюризма!
>>782960
#317 #782960
>>782958
Печатать? да ну. ток вручную. хоть запоминаешь
#318 #782962
могу я на плюсах написать свой язык?
#319 #782969
>>782962
Разрешаю тебе пойти в десятый класс.
#320 #782997
>>782962
Конечно :)
Как там, "на pythone можно написать нейронную сеть, а на с++ можно написать python". Другой вопрос - зачем.
#321 #782999
>>782918
Методы не привязаны к объекту, ало.
#322 #783052
>>782962
сначала нужен парсер, который будет определять что вообще пользователь пишет. на этом моменте проектируешь синтаксис языка.
потом компилятор/интерпритатор, который пропарсенный код будет переводить в инструкции для процессора/промежуточный байт-код. тут вообще пиздец. простой компилятор ты может и напишешь, но на то, чтобы написать хороший компилятор, который по качеству сравниться с clang-ом, у тебя уйдет уйма времени.
>>783072
#323 #783072
>>783052

>но на то, чтобы написать хороший компилятор, который по качеству сравниться с clang-ом, у тебя уйдет уйма времени


Если ты знаешь асм и есть опыт, то транслятор из ssa с оптимизациями вроде DCE, CSE можно написать за пару месяцев. Это уже будет около O1 по скорости.
#324 #783078
>>782962
Без проблем. Это очень просто, на самом деле. Бери forth - это очень минималистичный стековый язык. Простой интерпретатор напишешь за неделю, если вообще без опыта. Если хочешь писать компилятор - бери llvm. Там все несложно, при этом получишь быстрый нативный код со всеми оптимизациями и минимумом усилий.
#325 #783180
>>780571
Не понял, я не тот чувак, которому ты отвечал, объясни. Я думал системы есть х32 и х64? Соотв. указатели имеют по 32 и 64 бита размеры. Что за х86? Объясни дауну, пожалуйста.

А еще всегда можно узнать размер указателя вот так:
type *p;
int x = sizeof p;
Я прав?
>>783194
#326 #783188
>>777942
Объясни порядок действий i++ + ++i, как это будет выполняться вообще, пожалуйста.
>>783194>>783202
#327 #783194
>>783180
x86 это и есть то, что ты подразумеваешь под x32. Погугли, бывают еще 8-битные, 16-битные, 128-битные и вообще любые процессоры.
Можно и так, как ты написал, а можно вообще через sizeof(void*).

>>783188
i++ + ++i - это undefined behaviour, поэтому его лучше не использовать в коде.
#328 #783200
>>778009
а вопрос еще: какой области видимости будет принадлежать i, если я его запишу так:
{
/ внешний блок/
for (int i = 0; i<10;i++)
{
/внутренний блок/
}
}

Я вроде писал такой примерчик, скорее ответ будет такой: переменная i будет видна только во внутреннем блоке, однако, почему так происходит? В K&R говорится, что цикл for (int i = 0; i<10;i++) эквивалентен такому циклу
int i = 0;
while (i<10)
{
/инструкции/
i++
}
тогда получается, что переменная должна быть видна и во внешнем блоке. Пожалуйста, помогите разобраться
>>783247>>783280
#329 #783202
>>783194
Спасибо

>>783188 ньюфаг
#330 #783204
>>783194
Спасибо х2, ответил на 2 моих вопроса.
#331 #783207
>>783194
Еще хотел спросить, как лучше прохавать си и си++, я читал книжки и т. д., но сам понимаешь, после них остается много пробелов. Читать стандарт? Есть ли он на русском? Если нет, где мне его взять хотя бы на иглише?
>>783248
#332 #783209
>>782925

>запретить это компулятором


Как ты это себе представляешь?
>>783355
#333 #783247
>>783200
В Си Кернигана и Ричи может и аналог. Но в плюсах в цикле for (int i = 0; i<10;i++) i будет видна только в самом теле цикла.
#334 #783248
>>783207
Писать быдлокод, причем желательно чтобы за него тебе били по рукам.
>>783258
#335 #783258
>>783248
А так помимо кучи практики в шапке куча книг особенно Скотта Мейрса и Саттера - очень годно
#336 #783280
>>783200
В Си вообще нельзя объявлять переменную в инициализаторе цикла (по крайней мере, в C89). Т.о. ты там можешь писать только первый вариант. В крестах второй вариант эквивалентен первому с дополнительным наружным блоком (не считая мелких нюансов с break и continue) - {int x = 1; for (...) {...}}.
>>783291>>783425
#337 #783288
>>782925
Вызывать статические методы безопасно, ибо им вообще не нужен объект. Вызывать нестатические методы небезопасно, но нет способа быстро проверить в рантайме, указывает ли ptr на валидный объект, когда ты пишешь ptr->tvoyaMamka (). Представь, сейчас у тебя нет оверхеда, хранится 4 байта с указателем, и от тебя требуется лишь немного внимательности (или использование unique_ptr, где такой проблемы вообще нет). Если пытаться контролировать корректность, на каждый указатель будет дохуя дополнительных данных, а на каждое разыменование - куча проверок, вместо одной инструкции станет, например, тысяча. В быстром языке это неприемлемо.
#338 #783291
>>783280
Второй вариант <-> первый вариант.
#339 #783355
>>783209

>Как ты это себе представляешь?


Очевидно, как в расте.

>>782925
Пиздуй в раст трет.
>>783358>>784064
#340 #783358
>>783355

>Очевидно, как в расте.


В расте это тоже не возможно.
>>783388
#341 #783388
>>783358
Лень ждать пока ты спросишь почему поэтому щас объясню. На этапе компиляции это сделать нельзя т.к. выделение и удаление памяти происходит во время работы программы. Значит это можно делать только с помощью сборщика мусора и компилятор не может этого запретить.
>>783391
#342 #783391
>>783388
Ебать ты убогий, многое явно знаешь о компиляторостроении.
>>783393
#343 #783393
>>783391
Теперь ты объясни
>>783402>>783419
#344 #783402
>>783393
Что объяснять-то? Ты о вещах вроде ARC и концепции растовских лайфтаймов хоть слышал, дурашка? Нахуй ты пишешь что-то о расте, когда у тебя о нём представление уровня "ну эт такая хуитка хз чо ваще делает"?
>>783419>>784032
8 Кб, 459x366
#345 #783419
>>783402
>>783393
Долбоебы только картинки в тредах смотрят, хорош распинаться.
#346 #783425
>>783280
Спасибо, понял тебя
#347 #783440
>>783419
Шестерню "кол-во костылей" к плюсам добавь.
>>783452
#348 #783452
>>783440

> гибкость инструмента

>>783467
858 Кб, 200x200
#349 #783454
>>783419
МОДУЛИ
#350 #783467
>>783452

> настолько гибкий, что выскальзывает из рук

#351 #783566
>>783419
Ну-ка, в чем выражается гибкость C++, в отличие от других языков? Приведи пример
>>784357
#352 #783573
Привет парни.
Поясните, что такое LLVM и зачем он нужен? Почему нельзя просто пользоваться обычным компилятором/линковщиком?
>>783587>>783645
71 Кб, 251x251
#353 #783578
Почему QTextStream не наследовали от ostream? Если я хочу чтобы мой класс можно было выводить и через cout, и в какой нибудь Qt-ишный файл, мне нужно два раза operator<< определять?
>>783587
#354 #783587
>>783578
Патамушта не хотели зависимостей от STL – всё красиво, стандартизировано и отлажено только сейчас.

>>783573
Потому что гладиолус, осиль хотя бы вики на эту тему, на вась.
#355 #783645
>>783573

>Поясните, что такое LLVM и зачем он нужен? Почему нельзя просто пользоваться обычным компилятором/линковщиком?



Посоны, что такое внедорожник? Почему нельзя просто ездить на обычном фордфокусе/велосипеде?
#356 #783885
При помощи malloc выделяю память размером A байт. Создаю три массива, которые занимают B, C, D байт. Можно ли в выделенную память последовательно добавить информацию массивов, чтобы в ней они располагалить: A = B C D. Массивы имеют один тип данных, сумма точно совпадает.
>>783931>>784019
#357 #783930
Не нашёл треда по культе, поэтому пишу сюда.
Стоит ли использовать qt quick в проекте? Если да, то какие от этого будут плюшки?
>>784171
#358 #783931
>>783994
23 Кб, 350x280
#359 #783993
Как добавить объект наследуемого класса в вектор объектов родительского класса?
>>784018
#360 #783994
>>783931

Как, джокер?
>>783998
#361 #783998
#362 #784018
>>783993
Храни в векторе указатели на родителя.
#363 #784019
>>783885
Маллок не настолько медленный, чтобы экономить на такой хуйне.
#364 #784032
>>783402
А какое отношение ARC к компиляции-то имеет?
>>784038>>784093
#365 #784038
>>784032

>А какое отношение ARC к компиляции-то имеет?


ARC проставляет изменение счетчиков ссылок во время компиляции?
#366 #784064
>>783355

>Очевидно, как в расте


Раст не запрещает тебе произвольно лазать по памяти внутри unsafe, так же как С++ не заставляет тебя использовать сырые указатели вместо автоматических. Не можешь организовать работу с памятью вручную - используй автоматические средства.
>>784093
#367 #784093
>>784032
Наверно то, что он считает ссылки во время компиляции?
>>784064
Зато он ткнёт тебя носом вне ансейфа в это место, что и хотел тот антоша, и его модель памяти не несёт оверхеда в отличие от смартпоинтеров.
>>784141
#368 #784141
>>784093

>и его модель памяти не несёт оверхеда


Она несет оверхед в виде затраченного времени программиста.
>>784333
#369 #784156
С++ куны, у меня есть три дня,чтобы максимально больше получить знаний по плюсам,на что лучше время потратить - какие-то курсы смотреть,курить книгу или курить сайтофорумы?
>>784157>>784158
#370 #784157
>>784156
база какая? что уже знаешь?
>>784160>>784166
#371 #784158
>>784156
Забухай
#372 #784160
>>784157
лабы в универе(реализация всяких алгоритмов в основном,пара проектов - типо натягивания выпуклых оболочек),использовал лишь стандартные библиотеки.
>>784175
#373 #784166
>>784157
Короче - уровень бомжа со знанием каких-то основ.
#374 #784171
>>781762
Не зашквар. Главное в обработчиках кнопок не пиши основной код и называй кнопки нормально.
>>783930
QML нужен, если хочешь быстро нарисовать сложный плоский интерфейс. Есть биндинги. Любой объект можно расширять дополнительными данными прямо в коде. А сложную логику можешь писать на с++, связав QML и C++.
377 Кб, 1450x1080
#375 #784175
>>784160
Имхо, тогда лучше поучиться на практике. Сделай либо как можно больше тривиальных задач, либо несколько средних/сложных с пика, например.
По книге тоже нормально. Есть "Tour of C++" Страуструпа. Там как раз беглый осмотр всего языка.
Тонкости языка - "The C++ Programming Language" того же Страуструпа. Только ищи 4th edition.
>>784176
#376 #784176
>>784175
ありがとう
>>784177
#377 #784177
>>784176
сука блядь я анимедибилу помог!!!!!!!!!!!! как мне жить то теперь с этим
>>784181
#378 #784181
>>784177
私わ日本語がすきですよ
Я не анимедебил,я японский уже как год учу.
>>784185
#379 #784185
>>784181
ухххх гора с плеч
сложно? строить предложения уже можешь? понимать японскую речь без переводчика?
>>784190
#380 #784190
>>784185
Японскую речь без переводчика не могу,есть узнавание некоторых фраз,простые предложения могу строить,в стиле- "я люблю бухать,как дойти до ближайшего ларька". около 130 иероглифов знаю, это где-то уровень 2го-3го класса ихней школы. Зимой поеду экзамены сдавать. Много лулзов в языке.
>>784195
#381 #784195
>>784190
Тоже учу иероглифы, только корейские. Хочу туда в универ, когда с колледжа корку заберу.
Эх, поехал бы в Японию, если бы деньги были. Удачи тебе, хули.
>>784200>>784205
#382 #784200
>>784195
Тоже удачи.
#383 #784205
>>784195
Но там же нет интернетов.
>>784256
#384 #784256
>>784205
Ты наверное про Китай. В Корее все нормально вроде.
#385 #784333
>>784141
Меньший, чем на обдумывании "как бы зачистить ресурсы" и последующую отладку.
>>784363
#386 #784357
>>783566
В данном контексте - в возможности вручную управлять памятью.
#387 #784363
>>784333
При смартпоинтерах и RAII? Не тралль плиз
>>784421>>784437
#388 #784421
>>784363

>circular references

>>784431>>784432
#389 #784431
>>784421
Оче редки. Тут не жаба же. К тому же weak_ptr.
#390 #784432
>>784421
При нормальной архитектуре не бывает. Достаточно соблюдать правило единственного владельца и следить, чтобы его время жизни было шире, чем у юзеров.
>>784437
#391 #784437
>>784363
RAII работает как анус твоей мамаши держит говно – при любом исключении и пр. говно течёт.
Смартпоинтеры тяжелее unique_ptr в области где применяются плюсы – смишно.

>>784432

>соблюдать


Этим всё сказано. Либо у тебя компилятор-фашыст, либо ты будешь батрачить как коммунист если какая-то мелочь вылетит из головы.
#392 #784440
>>784437

>исключения


>2016

>>784467
#393 #784462
>>784437
Ну, все правильно. Элитариям, способным запомнить пару правил - кресты, необучаемым макакам - языки с анальными ограничениями.

>К чему стадам дары свободы?


>Их должно резать или стричь

#394 #784467
>>784440
Ну мань, мы уже поняли что ты нихуя в жизни не написал, у тебя не бывает легаси/сторонних библиотек с исп. исключениями и самрое главное – код всегда идеален – ты же круче робота и никогда даже ни на что не отвлекаешься (не забываешь разыменовать указатель добавив звёздочку, отвечая комраду например).
>>784471
#395 #784471
>>784467

>забываешь разыменовать указатель


И компилятор такой вместо того, чтобы сообщить о несоответствии типов, злорадно отправляет отчет парням из WG21, те бросают обсуждение нового стандарта, летят через полмира, врываются в твою сычевальню и долго ебут тебя в сраку?
>>784478
84 Кб, 339x611
#396 #784474
>>784437

>RAII работает как анус твоей мамаши держит говно – при любом исключении и пр. говно течёт.

#397 #784478
>>784471
Щас подорву: в крестах не настолько фошистская система типов, и такая хуйня бывает (напр. xyu='a' прекрасно скомпилируется).

Мы плавно перешли от методов управления памятью и ЭЛИТАРИЕВ, которые никогда не ошибаются, к разговорам о хуйне вроде твоей мамки.
>>784480
#398 #784480
>>784478

>xyu='a'


Макаба как обычно всё сожрала, даже квадратные скобки, но похуй.
>>784482
#399 #784482
>>784480
Залей на пастебин, а я популярно объясню, почему такого не бывает в нормальном коде.
>>784487
#400 #784487
>>784482
Лучше объясни как же так вообще появляются ошибки вроде переполнения буфера или утечек – ведь кресты осиливают только высокородные иллитарии.
#401 #784490
Или посмотри доклад Кольцова из яндекса – у него очень классный пример в начале.
>>784712
#402 #784524
>>784487
Но макакам никто не запрещает писать помимо скриптоговна на плюсах.
>>784533>>784577
#403 #784533
>>784524
Я так и делаю!
мимомакака
#404 #784577
>>784524
Как хачкельдаун прям ответил.
>>784582
#405 #784582
>>784577
А хачкель разве не скриптовый? я его никогда не встречал, да и желания нет
>>784605
#406 #784591
>>784487
Потому что их специально и очень тщательно ищут. То, что раст дает тебе некоторую гарантию внутренней непротиворечивости программы, не означает, что она не развалится от специально подобранных невалидных данных.
>>784605
#407 #784605
>>784582
Нет.
>>784591
Он мне даёт даёт гарантии что я не получу развалившееся говно из-за прогнивших костылей в языке, не больше, не каникулируй.
>>784607>>784648
#408 #784607
>>784605
Сравнительные примеры в студию, а то ты уже заебал своим нытьем на тему того, какой rust охуенный, а c++ - нет
>>784618
#409 #784618
>>784607
Так я и не ною, а отвечаю на твою тупость.
#410 #784648
>>784605

>Он мне даёт даёт гарантии


Ну круто. Ада тоже неплоха в этом плане. Но если ты браузер не пишешь, и твое хобби не медитация над выхлопом тайпчекера за тарелочкой борща, то тебе в общем похуй на 100% корректность, главное чтобы падало не чаще некоторого предела. Чего очень легко добиться имеющимися инструментами вроде валгринда и линтеров. В расте лично мне гораздо интереснее нормальные макросы, чем линейные типы.
#411 #784700
>>784487
У меня за джва года с прикрученным vld не было ни одной утечки. А переполнения буфера не было вообще никогда, по той простой причине, что в крестах никто не велосипедит фиксированные буферы. Можешь включать врети-режим.
#412 #784712
>>784490
Не увидел там ничего, кроме традиционной для мамкиных евангелистов борьбы с мельницами. Берется какая-то фича языка, показывается, как ее можно использовать неправильно, затем показывается, как можно сделать в рекламируемом языке то же самое лучше. А пацаны-то не знали! Самое вкусное начинается, когда встречаются джва евангелиста и начинают кормить говном друг друга при помощи этой тактики.
>>784765
#413 #784733
1. Поясните, зачем нужен std::deque, если есть другие контейнеры, например std::vector. Дело только в оптимизации (типо легко добавлять в начало)?
2. Где взять код, который за меня решит какой контейнер использовать в различных ситуациях?
3. Чем отличается value и default initialization?
4. Почему в STL нет контейнеров типа деревьев?
#414 #784743
>>784733

>Поясните, зачем нужен std::deque, если есть другие контейнеры, например std::vector


Дек сохраняет указатели на элементы после ресайза, вектор - нет. Правда с учетом того, что размер бакета там неизменен с 80-х, порядка десятков байт, проще запилить свой дек, который будет забирать память страницами.
>>784763>>784767
#415 #784763
>>784743
А разве не предусмотрено изменения гранулярности (с помощью аллокатора или еще чего)?
>>784768>>784793
#416 #784765
>>784733
1) Там где нужен такой формат данных;
2) Нигде. Нахуй ты такому коду вообще нужен был бы? Где-то были пикчи с алгоритмом выбора контейнера, поищи;
3) Перевести попробуй;
4) Есть.

>>784712
Так ты, вась, нихуя похоже не понел. Суть даже не в том, что именно этот код падает, а в том, сколько нужно знать о костылях языка чтобы написать даже такую банальщину без сегфолта.
>>784777
#417 #784767
>>784743

>Правда с учетом того, что размер бакета там неизменен с 80-х, порядка десятков байт, проще запилить свой дек, который будет забирать память страницами


Мать, ты чего? Да одних реализаций stdlib существует под 5 штук и чо, везде так, ты думаешь? Нихуя.
>>784793
#418 #784768
>>784763
предусмотрено, просто он дичь гонит.
https://github.com/llvm-mirror/libcxx/blob/master/include/deque
#419 #784770
>>784733
1. По факту есть три неуправляемых (т.е. не в виде сложных структур типа RB-trees) контейнера - vector (быстрый доступ, медленное добавление), list (медленный доступ, быстрое добавление) и deque (фактически list из нескольких vector, средний по обоим пунктам). Все остальные контейнеры - либо обертки над ними (queue, stack), либо небольшие модификации (forward_list). Добавление нужно в среднем реже, чем доступ, поэтому vector рекомендуется по дефолту, но есть места, где deque лучше (например, тот же queue, для которого vector вообще не годится из-за добавления в начало, а list плох, вероятно, из-за недружелюбности по кэшу, ибо часто в очередь добавляют и забирают элементы сразу пачками).
2. https://habrahabr.ru/company/infopulse/blog/194726/ . Код будет, когда к компилятору прикрутят полноценный AI, лол.
3. Основные отличия синтаксические, связанные с неоднозначностью парсинга объявлений функций и определений переменных с инициализаторами (про это в стандарте написано очень хорошо, в пунктах 8.2 и 6.8). С точки зрения использования - для пользовательских классов разницы нет, для встроенных типов default оставит переменную неинициализированной, но только если она имеет не static duration (включая thread_local). Неинициализированную нельзя читать до первой записи, если не хочешь получить UB.
4. Стандарт не регламентирует реализацию контейнеров, только интерфейс и алгоритмическую сложность методов. По факту деревьями реализуются все ..._set и ..._map. Прямой интерфейс дерева (x.left (), x.right ()...) слишком низкоуровневый для STL, обычно ты все равно пишешь обертку, чтобы оно балансировалось автоматически.
#420 #784777
>>784765
Если не прочитать инструкцию по использованию бензопилы, можно взять ее неправильным хватом и отпилить себе голову. Поэтому мы будем валить лес затупленной ножовкой, это точно безопасно.
>>784784
#421 #784784
>>784777
В этом треде лес валят костылями, апгрейд до тупого топора не так уж и плох.
#422 #784789
>>784733
в deque есть push_front.
vector ГАРАНТИРОВАННО распологает элементы последовательно в памяти. То есть он может использоваться массив.
deque НЕ ГАРАНТИРУЕТ последовательное расположение в памяти. Так же deque распологает элементы блоками.

Вот бенчмарк вектора, деки и листа:
http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html
#423 #784793
>>784763

>А разве не предусмотрено изменения гранулярности


В стандартной либе - нет. Правда сделать нужную гранулярность аллокатором - не проблема.
>>784767

>везде так, ты думаешь


На основных еще 5 лет назад так было, у МС до сих пор 32 элемента на чанк.
#424 #784797
>>782906
из матлаба конвертируешь в с/с++ код и радуешься. все так делают
#425 #785220
Классная серия видео с cppcon. Хотелось бы там вживую поприсутствовать.
#427 #785268
>>785261
Модули и концепты похоже в с++30 будут.
>>785292>>785689
#428 #785292
>>785268
Как раз на Марсе опробуем.
>>785689
#429 #785356
>>776344 (OP)
привет с++ господа,
к вам небольшой вопрос.
поделитесь каким нибудь мануалом, чтобы с опытом 2 года java вкатиться в плюсы.
#430 #785358
>>785356
2 года java это всмысле 2 года работы
#431 #785378
>>785356
Тот же что и без двух лет опыта джавы.
>>785421
#432 #785385
>>785356
Шапка для кого сделана, пидор?
>>785421
#433 #785421
>>785385
>>785378
хули вы как нелюди, уебки блядь. нахуй мне всю эту дичь читать, когда 90% я уже знаю и лишь посмотреть разницу между языками
правда же говорят, что плюсаны хуже червя пидора
#434 #785424
>>785421

>разницу между языками


Так нет таких книг. А если будешь учить по другому, то пропустишь что-то важное.
#435 #785433
>>785421

>90% знаю


Попробуй cppquiz из конца шапки, маня. Для джаваблядка даже 9% правильных ответов будет подвигом.
Приложение для игры. Как решить эти проблемы? #436 #785460
Хочу создать приложение для игры, чтобы показывало данные из неё в компактном виде.

Выбрал я для него win32API в MS Visual C++. Но столкнулся с несколькими проблемами, как их решить?

1) Показ поверх окна игры в полноэкранном режиме.
[code]SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);[/code]
Помогает лишь с приложениями неполноэкранных. При заходе в игру - скрывается под ней. Как исправить? (чтобы в этом плане как окна Steam)

Это прямо звиздец как надо, иначе от приложения никакого профита не будет. Мб как-то привязать к конкретной игре можно? (джов мод там все дела)
=========
2) Собственно, как можно "вылавливать" информацию из онлайн игры программно?
Например, если я хочу, чтобы здоровье персонажа отображалось в моём приложении
#437 #785481
>>785421
Мейерса читай. Там как раз тонкости описаны, без разливания воды для нубасов. Лично мне хватило википедии и Мейерса, чтобы вкатиться.
>>785514
#438 #785514
>>785481
спасибо, гляну
>>785523
#439 #785523
>>785514
Александреску еще посмотри, чтобы типовые паттерны шаблонной магии знать.
#440 #785525
>>785356
Страуструп "Tour of C++".
#441 #785596
Здравствуй, Анон. Подскажи каким образом можно создать структуру данных с массивом внутри, причём чтобы в той области памяти, куда указывает структура хранился не указатель на массив данных, а непосредственно данные? Ну и естественно не только массив данных я туда хочу поместить. В общем нужен способ легко работать с данными, но при этом чтобы они хранились в памяти рядом и с них таким образом можно было легко снять хэш.
Можно наверное было бы выделить память и перемещаться по ней используя адресную арифметику и приведения к другим типам. Или это зашквар? Есть способы лучше?
>>785607
#442 #785602
>>785261
universal hashing так и не завезли, падлы.

> 2017


> алгоритмы хеширования намертво прибиты к типам


Это пиздец!
>>785689
#443 #785607
>>785596

>куда указывает структура хранился не указатель на массив


Так всегда если не используешь new
http://ideone.com/b0S3Yy
#444 #785608
#445 #785609
#446 #785689
>>785602
>>785268
>>785292
Так это всё подтверждение слов крестофанатика выше: другие языки не нужны. Можно толочь говно костылями, проходить cppquiz в лучшем случае на 10% и сидеть пиздеть что кресты – единственный нужный язык.
>>785708
#447 #785704
А что вы скажете о темплейтах, а точнее даже о частом использовании оверлоадинга, всех этих "специализаций", плюс наличии ещё и нетемплейтных вариантов и т.д.? Вроде теоретически всё понятно, но надо ли стремиться самому делать 38 функций с одним и тем же названием? Пишут так вообще, или нормальный чужой код можно понять без необходимости сидеть и думать, какая же из них требует наименьшего количества конвертаций типов? (Особенно когда есть поинтер и не поинтер версии, которые обе могут подойти). Во встраиваемых системах, если область применения что-то решает.
>>785705
#448 #785705
>>785704

> А что вы скажете о темплейтах, а точнее даже о частом использовании оверлоадинга, всех этих "специализаций", плюс наличии ещё и нетемплейтных вариантов и т.д.?


Ну а как ты будешь делать какие-то структуры данных без темплейтов?
#449 #785708
>>785689

>другие языки не нужны


Других языков просто нет для ниши, которую занимает С++.
>>785711
#450 #785711
>>785708
И в какой же? Удиви меня.
#451 #785716
>>785711
Игровые движки.
>>785718>>785722
#452 #785718
>>785716
Да ты шутник.
#453 #785719
Какой хуя g++ в линупсе не задает __linux__?

При отладке функции между #ifdef __linux || __linux__ и #endif не выполняются.
>>785806>>786073
#454 #785721
>>785711
Для ниши кроссплатформенного низкоуровневого языка с кучей либ на все случаи жизни и компиляторами подо все, что способно запускать код.
#456 #785723
>>785711
Десктопные приложения, которым требуется макс производительность.
>>785731
#457 #785726
>>785722
Я видел переписанный Квейк на JS.
Значит ли это, что нужно бросать С++ и писать на JS?
Может новый Дум, например, написан на Паскале?
#458 #785727
>>785722
Играл в хеджворс на компьютере с гигом оперативки и целерон д на 2 ГГц? Я пробовал, получается хуёво.
#459 #785731
>>785723
Для любого реалтайм/хуйлоад софта и пр. замена уже давно есть, компилятор под все платформы не беда - ллвм поможет.
>>785735
#460 #785735
>>785731

>Для любого реалтайм/хуйлоад софта и пр. замена уже давно есть


Почему же ее не используют?

>компилятор под все платформы не беда - ллвм поможет


Под винмобайл, например, уже появился?
>>785740>>785790
#461 #785740
>>785735

>Почему же ее не используют?


В основном, легаси.

>Под винмобайл, например, уже появился?


Ух блять. Обычно тралят экзотическими китайскими мк, но тут у нас что-то пожоще.
Нет, и не будет под это мёртвое говно.
>>785761
#462 #785761
>>785740

>В основном, легаси


Это не "легаси", а отсутствие вменяемых средств разработки у других языков.

>Нет, и не будет


Я так и думал.
>>785768
#463 #785768
>>785761
Это легасиговнище – никому не всралось переписывать готовые движки, которые начинали писать десять+ лет назад.

Конечно ты правильно думал – привёл легасипример, причём никому нахуй не нужный. Хоть бы бохатый эмбдед который делается на хуитках вроде Qt Embedded – там да, нет альтернатив.
>>785773
#464 #785773
>>785768

>привёл легасипример


Я про винфон говорил. Винмобайл умер уже, да.
>>785786
#465 #785786
>>785773
Винфон, внезапно, тоже.
У раста всё нормально с армом, не проблема абсолютно.
>>785822
#466 #785790
>>785735

>Под винмобайл, например, уже появился?


Вроде разговор начинался с десктопных приложений...
>>785793>>785817
#467 #785793
>>785790
У каникулёра просто закончились аргументы, в ход пошло "смотри, а я зато на голове стоять умею!".
#468 #785803
Заведите себе тред RUST/PHP/JS круче C++ и устраивайте там школосрачи.
>>785805
#469 #785805
>>785803
Лучше продолжу тут толочь говно костылём. Как никак напрямую к плюсам относится тема.
>>785823
#470 #785806
>>785719
А какая версия GCC, братишка? Никогда не было проблем с этим
>>785831
#471 #785817
>>785790
Про кроссплатформенность тоже было. Касаясь десктопа, есть ли для раста, ди и го гуи либы уровня qt и wx?
>>785829
#472 #785822
>>785786

>У раста всё нормально с армом, не проблема абсолютно


Под винфон можно конпилировать только МС тулзами, а там поддержку раста как-то не завезли еще.
>>785829
#473 #785823
>>785805
Конечно тут останешься, в треде про вашу хипстероподелку никто и не постит.
>>785829>>785833
#474 #785829
>>785817
Всегда есть языконезависмый QML.
>>785822
Лол, так даже эпл не выёбывается. Ну, уже похуй – платформа мертва.
>>785823
Ну да, там нету толпы нюфагов с вопросом как запустить компиляцию (где там та пикча?).
>>785849
#475 #785831
>>785806
5.4.0 20160609

Может влияет то что пишу и отлаживаю в Code::Blocks?
>>785833>>785837
#476 #785833
>>785831

>Может влияет то что пишу и отлаживаю в Code::Blocks?



>>785823

>Конечно тут останешься, в треде про вашу хипстероподелку никто и не постит.



Сука, ору.
#477 #785837
>>785831
Попробовал собрать исходник через g++ напрямую и нихуя. __linux__ так и не задается.
>>785851
#478 #785849
>>785829

>Ну, уже похуй – платформа мертва


Под UWP, кстати раста тоже нет.
#479 #785851
>>785837
Попробуй запустить g++ -dM -E - < /dev/null | grep linux
>>785869
21 Кб, 588x366
#480 #785869
>>785851
Запустил.
>>785870
#481 #785870
>>785869
Значит все он видит, кидай код.
>>785891
#482 #785891
>>785870
std::string getSystemName()
{
std::string result;
#ifdef _WIN32
// TO-DO
#elifdef __linux || __linux__
struct utsname uts;
uname(&uts);
char buffer[1024];
snprintf(buffer, 1024, "%s %s", uts.sysname, uts.release);
result = buffer;
#endif
return result;
}
>>785893
#483 #785893
>>785891
std::string getSystemName()
{
std::string result;
#ifdef _WIN32
// TO-DO
#elif defined(__linux) || defined(__linux__)
struct utsname uts;
uname(&uts);
char buffer[1024];
snprintf(buffer, 1024, "%s %s", uts.sysname, uts.release);
result = buffer;
#endif
return result;
}
>>785898
#484 #785898
>>785893
А почему тогда #elifdef не катит?
>>785901>>786070
#485 #785901
>>785898
ANSI-C стандарт вроде #elif defined. хотя могу спиздеть в классической Си не очень опытен
>>786070
#486 #786070
>>785898
>>785901
#elifdef хватило если бы был один аргумент. А там же два
#487 #786073
>>785719
#if defined(__linux) || defined(__linux__)
#488 #786116
Сап, крестач. Пишу под Бубунтой в CodeLite.

Есть массив:
static int deVisAttribs [] = { GLX_RENDER_TYPE, GLX_RGBA_BIT,
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_DOUBLEBUFFER, 1,
GLX_RED_SIZE, 8,
GLX_GREEN_SIZE, 8,
GLX_BLUE_SIZE, 8,
GLX_ALPHA_SIZE, 8,
None };

Есть библиотечная функция:
extern GLXFBConfig glXChooseFBConfig( Display dpy, int screen, const int attribList, int nitems );

Есть вызов функции:
deFBConfig = glXChooseFBConfig( deDisplay, deScreen, deVisAttribs, deFBCount );

Все написано аналогично примеру в OpenGL-вики, так же выглядит в ряде других исходников. Не понимаю, почему g++ считает, что для третьего параметра "error: invalid conversion from 'int' to 'int*'"? Это что-то так поменялось в С++11?

Попытался собрать чистый пример из OpenGL-вики - еще хуже: g++ утверждает, что функции из XLib не определены, а опцию -lX11 игнорирует.
>>786137
#489 #786137
>>786116

deFBConfig = glXChooseFBConfig( deDisplay, deScreen, deVisAttribs, &deFBCount );
последний параметр указатель на int принимает, а ты просто int пытаешься передать
>>786145
#490 #786139
Хочу использовать QString. Как мне собрать через g++?
#491 #786145
>>786137
Не последний, а предпоследний (третий, а не четвертый).
Амперсанд уже пробовал ставить, в этом случае выдает "error: cannot convert 'const int (&#42;)[15]' to 'const int&#42;'"
Не понимаю, этот код раньше работал же у кого-то?
>>786147>>786148
#492 #786147
>>786145
Ептыть макаба! Звездочки тупо парсит, а html-коды значит не кушает, скотобаза!
#493 #786148
>>786145
https://www.opengl.org/sdk/docs/man2/xhtml/glXChooseFBConfig.xml
nelements Returns the number of elements in the list returned by glXChooseFBConfig.
И все же последний
29 Кб, 560x114
#494 #786167
Тест на проф. пригодность, крестаны. Кто не решит, тот - хуй.
#495 #786168
>>786167
надо написать значения переменных ITT
>>786170>>786188
sage #496 #786170
#497 #786185
>>786167
n = ffff;
хуй знает, по идее компилятор ругнется
n3=-32768;
n4=-1;
>>786187
#498 #786187
>>786185
Ошибся во всем
>>786190
#499 #786188
#500 #786190
>>786187
не гони
>>786198
#501 #786198
>>786190
отвечаю, сам охуел, когда сегодня эту тему вспоминал. По-хорошему, все эти implicit conversions нужно нахуй выпилить и зопретить. Не понимаю, чем думали те, кто это делал.
>>786199>>786201
#502 #786199
>>786198
Ща вижуалстудию открою
>>786201
#503 #786201
>>786198
>>786199
Она не понадобилась, грит объебался в 1 и 2 только
http://ideone.com/pGiWMj
>>786203
#504 #786203
>>786201
ошибся во всех примерах, инфа сотка
>>786207
#505 #786207
>>786203
Намекаешь на undefined behavior?
>>786211
#506 #786211
>>786207
да, там везде undefined, platform-dependent и unspecified
sage #507 #786214
>>786211

>platform-dependent и unspecified


А это в каком месте?
>>786224
#508 #786216
>>786211
ну так для лаб существует только хуй86 и интел его пророк
sage #509 #786221
>>786211

>platform-dependent


Вообще такого термина в стандарте не нашёл.
#510 #786224
>>786214
1 - undefined
2 - undefined
3 - unspecified
4 - implementation-defined
>>786228
sage #511 #786228
>>786224
Уверен?
>>786233
#512 #786233
>>786228
да
сагу спрячь откуда достал, заебал
>>786234
sage #513 #786234
>>786233
Можно ссылки на пункты в стандарте?
>>786243
#514 #786243
>>786234
Сам такое ищи.
Если хочешь научно-популярно, то ищи тут:
http://en.cppreference.com/w/cpp/language/implicit_conversion
http://en.cppreference.com/w/c/language/conversion

Эта параша одинаковая и там, и там.
>>786247
sage #515 #786247
>>786243
Гм. Как же ты уверен, если пруфануть не можешь.
>>786251
sage #516 #786251
>>786247
cppreference пилят поцоны из комитета. Я им верю.
>>786273
sage #517 #786273
>>786251
Ну, с первыми двумя пунктами я согласен. А вот насчёт 3 и 4 вопросы. Почему ты по-разному обозвал то, что там происходит? Где разница?
>>786297
#518 #786297
>>786273
В первом случае там signed integer overflow, а во втором - integer type narrowing.
>>786309
sage #519 #786309
>>786297
Где же там overflow? INT16_MAX это integer-литерал. short-литералов не завезли, в отличие от long
Так что справа от `=' всё o'k.
>>786322
#520 #786311
>>786167
1. Unscpecified
2-4. Undefined
>>786323
#521 #786322
>>786309
Да, ты прав. Пример составлен неправильно. Надо было int32_t n4 = INT32_MAX +1;
#522 #786323
>>786311
Ссылочку на стандартик
#523 #786360
Я правильно понимаю, что быть хорошим C++ разработчиком == знать наизусть стандарт? На это же можно потратить огромное количество времени и сил, не слишком ли серьезно C++ разработчики относятся к сухому знанию языка?
sage #524 #786363
>>786360

> C++ - довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется - это хорошее зубрилко а не хороший программист.

>>786368
#525 #786364
>>786360
Не, забей, никто не учит стандарт до тех нюансов, что выше по треду. Обычно реальный код сводится к довольно ограниченному подмножеству c++ с довольно строгими правилами, так что ситуации вроде проблем с неявными преобразованиями не встречаются практически никогда.
#526 #786365
>>786360

> Я правильно понимаю, что быть хорошим C++ разработчиком == знать наизусть стандарт


Язык это лишь инструмент.
Если ты им владеешь хорошо, то это замечательно.
Но при помощи инструмента ты создаёшь какие-то детали программы.
И если ты не знаешь как правильно сделать её и как они будут взаимодействовать с другими, то толку от простого владения мало.
>>786390
#527 #786368
>>786363
Школьник ITT, спешите видеть. Если откинуть неоправданно сложные моменты с неявными преобразованиями и разрешением перегрузок, то cpp окажется одним из передовых. А с введением концептов - будет еще круче.
>>786372
sage #528 #786372
>>786368

> Если откинуть неоправданно сложные моменты с неявными преобразованиями


То получится OCaml с оператором + для целых и +. для плавающих типов.
>>786374
#529 #786374
>>786372

>OCaml


Как что-то плохое. Да и в чем проблема явно преобразовать значение перед работой? Такое вообще бывает довольно редко.
>>786377
sage #530 #786377
>>786374

>Как что-то плохое.


А я сказал, что OCaml — это плохое?
#531 #786390
>>786365
Понимаю, я говорю о том, что именно у C++ программистов очень сильный дроч на знание языка.
>>786392
#532 #786392
>>786390

> я говорю о том, что именно у C++ программистов очень сильный дроч на знание языка.


Да, это так.
Возможностей отстрелить себе ногу очень много.
124 Кб, 1552x176
#533 #786440
Посоны, как конвертировать double в long? Ведь в double порядок может быть принимать значения вплоть до 2^2048, что явно, блядь, не поместится в long, где максимальное число 2^63. Даже сраный float не поместится по такой логике в long.
А если не поместится, то будет UB.
Что делать, господа?

P.S. Вот вам выдержка из стандарта. Тут говорится "value", т.е. подразумевается, что если непосредственное значение во время рантайма влазит, то все будет ок. Я правильно понял?
sage #534 #786635
test
#535 #786698
Если добавлять элементы в дек в конец или начало, итераторы станут невалидными, в то время как указатели и ссылки остаются валидными.

Почему так происходит? Ведь итератор - это просто обертка над указателем на элемент (или нет?).
#536 #787448
А в чём смысл специализированных темплейтов для функций? Почему нельзя просто обычной функцией их заменить? В каком случае такой темплейт может быть полезнее?
>>787561
#537 #787561
>>787448
А зачем заморачиваться в коде, какую функцию нужно вызывать, если можно вызвать все ту же func<тип>?
Во-вторых, шаблоны можно вызывать без параметров в угловых скобках, например, когда компилятор может сам догадаться исходя из параметров в (), тогда тоже можно будет не запариваться.
Ну и иногда оно полезно, например, при рекурсивных шаблонах - задается определенный параметр шаблона, на котором она заканчивается.
>>787591
#538 #787591
>>787561

>А зачем заморачиваться в коде, какую функцию нужно вызывать, если можно вызвать все ту же func<тип>?


В смысле? Я не имел в виду другое имя, а просто оверлоад сделать. Чем func<тип> удобнее, чем просто func-то? Конечно, со специализированным темплейтом не нужно тайпкастить все аргументы, если их несколько, для автоматического выбора желаемой функции.

>компилятор может сам догадаться


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

>>787561

>при рекурсивных шаблонах


А можешь пример показать?
>>787595
#539 #787595
>>787591

>просто оверлоад сделать


У шаблонов самый большой приоритет при перегрузке. Ты не сможешь просто переопределить.

>Так он и с обычной функцией догадается


Смотри выше

>А можешь пример показать?


http://ideone.com/OVvf8I
>>787609>>787654
#540 #787609
>>787595

>У шаблонов самый большой приоритет при перегрузке. Ты не сможешь просто переопределить.


Но ведь нет. http://ideone.com/RmW7B0

>http://ideone.com/OVvf8I


Интересно. А как это в <> у тебя не тип, а значение? Туда что угодно можно вставлять, что ли?

И что это за формат template<unsigned i>? Это как называется, чтобы прочитать? Меня только template<typename typename> в качестве базового шаблона пока учили.
>>787624
#541 #787624
>>787609

>>Но ведь нет.


Странно, где-то я читал обратное. Нужно будет повторить теорию.

>>787609

>Туда что угодно можно вставлять, что ли?


http://en.cppreference.com/w/cpp/language/template_parameters
#542 #787632
Вы че охуели. Где ответ блять?

Если добавлять элементы в дек в конец или начало, итераторы станут невалидными, в то время как указатели и ссылки остаются валидными.

Почему так происходит? Ведь итератор - это просто обертка над указателем на элемент (или нет?).
#543 #787654
>>787595
Пиздец, какой же мрак и гниль эти шаблоны.

Это невозможно поддерживать, если такое как у тебя в примере будет дохуя в проекте.
#544 #787903
помогите с классом
class Bar {
public:
float Set_price_start(float price_start)
{
float start = price_start;
return start;
}

float Get_price_start() { std::cout << start << std::endl; };
private:
float price_start;
Bar();
};

почему Get_price_start не понимает что такое start???
>>787905
#545 #787905
>>787903
А что ты подразумеваешь под start внутри Get_price_start?
>>787907
#546 #787907
>>787905
ну,значение приватной переменной price_start
>>787911
#547 #787911
>>787907
А почему компилятор должен думать, что под start ты понимаешь price_start?
>>787913
#548 #787913
>>787911
как ему это объяснить?
>>787915
#549 #787915
>>787913
Может быть писать price_start вместо start?
#550 #788689
Есть один хелловорлд.
В нем QtCreator не может найти std::make_unique. CONFIG += c++14 прописал, <memory> подрубил.
Заметил, что если отключить плагин clang code model, то все работает нормально. Что это за хуйня?
Эхо сервер tcp на c++ #551 #789010
Господа, подкиньте пожалуйста, в кого схоронено.
Нужен шаблон - а на его основе буду писать уже то что мне надо
>>789011
#552 #789011
>>789010
Линуксовый
#553 #789350
Есть задача: написать функцию, которая бы отображала сколько раз эта функция была вызвана (если в двух словах, целиком условие вот http://pastebin.com/ZsttcgzP ).
Элементарно делается через статическую переменную, но задача дана в главне, предшествующей описанию статических переменных. В этой же главе описывались инлайн функции, дефолтные аргументы и темплейты. Возможно ли эту задачу как-то сделать через инлайн функции (у меня не получилось), или составители просто ошиблись и не туда впихнули задачу? Prata C++ Primer 6th Edition, Chapter 8, Ex. 1
>>789371
#554 #789351
И ещё по неймспейсам вопрос. http://ideone.com/kix7uE почему тут функция getDebt спокойно видит getPerson из другого неймспейса без какого-либо указания на него, без using'ов и т.д.? Всего лишь потому, что структура Debt использует структуру из того неймспейса?
#555 #789371
>>789350
через глобальную переменную или внешний аргумент
>>789425
#556 #789425
>>789371
Ну глобальная понятно, она ж тоже, формально, статическая будет (скоупинг и времена доступа к/жизни переменных в следующей главе шли, в любом случе).
А под "внешним аргументом" ты что подразумеваешь?
>>789483
#557 #789483
>>789425
передавай счетчик как аргумент , внутри функции инкрементируй
>>789498
#558 #789498
>>789483
Не, сигнатура функции по заданию была оговорена.
Ладно, спасибо. Видимо, и правда не туда вставили, так как в следующей главе похожий вопрос есть.
#559 #791185
Есть такое задание, ничего больше стандартных библиотек не знаю, чё читать(курить) по теме этого задания??

Есть определенная иерархия папок. Надо все их просканировать на *.h файлы. Во всех папках надо найти все конструкции вида #define IDD_WIZARD_PAGE 101 и распарсить их, составив словари IIDD_WIZARD_PAGE - 101 для каждой папки.
Программа должна уметь:
1) Игнорировать часть папок. Список папок задавать в отдельном файле.
2) Показывать дубликаты. Дубликатом считать если число одинаковое в разных папка, а ID разное.
3) Выводить на экран список занятых диапозонов значений для конкретной папки.

То есть у программы должны задаваться команды из командной строки:
your_app.exe --showdups или your_app.exe -sd для показа дубликкатов
your_app.exe --showrange folder_name или your_app.exe -sr folder_name для показа занятого диапазона значений
18 Кб, 304x305
#560 #795920
Господа, а как мне сделать проверку выхода за границы статического массива?
К примеру если дан массив int a[10]. И если я попытаюсь получить доступ к a[-1] или a[11], то получу предупреждение.
Тред утонул или удален.
Это копия, сохраненная 24 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски