И тот, кто вел меня, ввысь указал: "Взгляни: взвились, узрев тень говнокода, Три фурии, которых Он призвал.
Инкапсуляция затмит в обитель входы, Наследование - средняя из них - Даст пришлецам вкусить чужого плода,
Полиморфизм поглотит суть". И он затих.
Литература:
Для нюфань: Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один,
который больше приглянется. Герберт Шилдт - C++. Базовый курс (2010) - http://goo.gl/qMLAFl Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - http://goo.gl/QvjR6x Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u Для желающих сразу начинать с Откровений Создателя - классика (может показаться суховатым): Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2009) - https://goo.gl/87qXtW
Учимся не писать говнокод: Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все. Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO Скотт Мейерс - Effective Modern C++ (на ангельском) (2015) - https://goo.gl/uImH0J Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
Тонкости языка (для гурманов): Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512 Также для легкого чтения подойдет книжка c историей создания C++: Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo
Отдельные аспекты: Читать по необходимости. Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - http://goo.gl/0M4NpG
Вопросу по синтаксису идут на хуй. Лабы идут на хуй. "Как мне сделать Х на чистых крестах без библиотек" идут на хуй. Все идут на хуй. Хейтер сосет члены на пару со своей мамашей.
>>518070 Да не, он опенсурсный. Там есть какая-то платная поддержка, но обычный репозиторий просто доступен + можно свои серваки поднимать. Я чего интересуюсь, хочу для личного проекта в плюсы вкатиться, а если вкатываться, то лучше это по-умному сделать и облегчить себе страдания.
На счет переворота строки. Задумался сегодня утром над этой задачкой. И вот что надумал. Поясните прошаренные крестогоспода, верно ли такое решение? Пробелы не считает, размер строки не динамический; но ведь это и не обязательно? я только учусь. сам в смысле, а не в вузике
char St[20] = {0}; cout << "Vvedite stroku" << "\n"; cin >> St; for (int i = strlen(St)-1; i >= 0; i--) cout << St; cout << "\n" << "END";
Народ, сори что здесь задаю, хочу услышать вас а не похапистов и питонеров. Реально ли без побочных эффектов начать учиться программировать с крестов? Или реально нужно начинать с чего-то скриптового? Просто меня как-то не сильно тянет в веб, хочется либо C либо C++ но второй предпочтительней, ибо даёт понятие о классах. Да, школота.
>>518142 Реально, тем более если школьник - время то есть, если пойдешь в универ на прогера то все равно крестами ебать будут. Кресты это не совсем выгодно по времени, и работу ньюфагу тяжело найти. Но если есть желание именно крестами занятся то можно, в крайнем случае потом перекатишся в что-то другое. Если ты действительно выучишь язык то лишним это не будет.
>>517072 >Он не позволяет на строку вверх подняться. Такс-так-такс, а что тут у нас? Классика-классика-классика. Нельзя в <iostream> на строку вверх подняться, это тонкости реализации конкретной консольки, иостриму про неё откуда знать, он чары петушит.
>>518187 Борщехлебу-кукаретику порвало от того, что можно объяснить что-то в двух словах без матиши. "Как же так, нипарядак! Слишкма проста! Былла! Пок-пок-пок!"
>>518253 Программируют стиральные машины, а разработчик пишет код. Бывают еще такие, кто код не пишет, а дрочит факториалы, кушая борщ. Но они тоже не программисты.
>>518285 Лучше быть няшной проприетарной госпожой, чем обоссаным вонючим гнилозубым спермобаком, которому даже проститутка не даст. Остается только сексоваться со своей рукой и линуксом.
>>518251 Уж не знаю, кто там тебя наотвечал вместо меня, но мне бомбит не от того, что она female, а от решительного воскладывания хуйца на стандарт языка, причём не единократно замеченного. И я устал писать об этом в каждом треде, что её обоссывает собственная френд-лента и т.д.
Да, чтобы добить твою "аргументацию", у меня есть знакомая, которая давала мне советы по кодингу (Почему? Потому что я сам у неё спроси.). Ну так вот, её советы со стандартами кодинга совместимы со стандартом языка на 100%, а твоя Алёна-шлюха нет.
>>518280 >Если ты считаешь себя себя лучше Алены, то почему не работаешь в Micosoft? Пиздец, нахуя я на тебя время тратил вообще, бездарное животное? Пиздуй из раздела обратно в /fem , потому что с таким типом аргументации даже в /dev тебя обоссут.
>>518256 Я процедурный дристальшик с пунктиком на кросс-платформенности, мимо.
>>518338 > вокруг полно малообеспеченных, нецелеустремленных и некрасивых мужчин, которые не пользуются успехом у женщин Но ведь сосачеры (и ты тоже) как раз такими и являются. И в первую очередь программистишки. Алсо, чисто для секса (не для семьи) какая разница, девственница или нет? Девственница даже хуже, ее труднее затащить в постель. Сам встречаюсь с РСП, мне норм (жениться не собираюсь, конечно).
Сап анонасы-анонасики. Вопрос о массивах объектов, которые не имеют конструктора по умолчанию. Короче, хуй ты их задашь, только массивом указателей.
Если понаделать этих дефолтный конструкторов, задать массив, нормой ли является тупорылое присвоение методам классов значений? До этого они передавались в конструктор. Это выглядит убого, на мой взгляд, но как-то по-другому не выходит. Вариант с инициализацией массива Сl cl[2] A::A():cl[0](1,2),cl[1](2,3){} в конструкторе класса, содержащий массив объектов, не работает нихуя. Все способы, которые видел в инете, являются каким-то костылями.
Выручайте господа, изучаю c++. Была задачка по вводу 10 значений в массив значений short, и в случае если в массив вводится символ, а не цифра, попросить о повторном вводе числа. Пока, что ввод повторно числа не сделал, хотел простое прерывание ввода чисел сделать, если вводится число. Но как только ввожу число, все крашится с ошибкой: Программа "[178944] test.exe: Машинный код" завершилась с кодом 3 (0x3). Гуглил, говорят, что ошибка потока ввода. Где-то говорили, что "код русской буквы не пренадлежит интервалу от -1 до 255" Но крашится, даже если я ввожу английские или русские литеры.
Просто хочу напомнить, что любой человек мужского пола, активно мониторящий и отписывающийся на этом сайте - что-то уровня червя-пидора или ниже. Я не отрицаю, что адекватные мужчины иногда читают двачи, а изредко даже отписываются. Но те, кто сидит здесь на постоянной основе - очевидное дно, омежные сосачерские дебилы и выродки (не упомянула рф-чуханов, поскольку с ними все и так ясно). Отвечать им, а тем более вступать в полемику - все равно что вступать в полемику с говном, на которое ты случайно наступила.
(Автор этого поста был забанен. Помянем.)
>>518516 1. Ты забыл фигурные скобки и break у тебя выполняется всегда. Вообще пиши всегда if(){}else{}, и никогда if()...;. 2. ты записываешь вывод cin в double а потом проверяешь через isalpha - так это не работает. тебе нужно записать вывод cin в string (или char[]) и тестить строку, и если atof(..) срабатывает, то сохранять в массив.
>>518187 Няш, ну я же уже отвечал тебе в одном из предыдущих тредов. Лена не идеальна, но лично я во времена ньюфажества нашел у нее в блоге много полезного, причем потратил на это немного времени из-за краткости статей. Более того, половина ее статей являются дословным переводами Саттера и других гуру, к которым претензий вообще никаких. Так что, я по-прежнему считаю, что ссылка на подобный блог в шапке должна быть. Если бомбит конкретно от Лены, предложи что-то лучше условия: на русском и кратко, чтобы был не учебник под маской блога, я с удовольствием поменяю тогда. Но просто удалять без замены и намеренно обеднять шапку только чтобы у кого-то не бомбило это не дело, верно же? мимооп
>>518525 1. Буду писать, как ты сказал. 2. Да я идиот, надо было в начале просто попробовать ввести в double массив значение типа char и убедится, что получается дребедень. string не хочу пока, что использовать. Почему я пытался ввести в массив double значение типа char? Меня просто ввел в заблуждение код, который позволял проверять, вводится ли символ вместо double. Вот этот код. http://pastebin.com/tsXFkffc Я так понимаю, что моя проблема в том, что я не до конца понимаю, как работает поток ввода cin. cin это метод класса istream ?
Товарищу, который постит переворот строки: велосипеды это конечно здорово поначалу, но реалии таковы, что использовать библиотечный std::reverse (std::begin (St), std::end (St)) будет заведомо быстрее и читабельнее, чем все, что ты напишешь. Такие дела.
>>518719 Ну смари, мне-то без разницы, на каком языке. Но мы же говорим про ньюфагов, так что, думаю, тут что-то на ангельском использовать нельзя. Потом, книжки (и страуструпова в том числе) и так есть в шапке, но там же многобукаф и не все осилят. А нужен блог, чтобы отдельными маленькими статьями разбирались подводные камни, без синтаксиса и прочей хуйни. В идеале что-то типа HotW Саттера, который в шапке есть, но на русском.
>>518829 Любая сущность должна иметь наименьшую возможную область видимости. Если никто, кроме твоего класса, использовать структуру не должен - объявляй ее внутри класса. Если используется только твоими классами - объявляй в собственном отдельном пространстве имен. Ну ты понел.
>>518833 const можно присваивать любое значение, которое вычислится во время работы программы. constexpr должно быть известно на этапе компиляции, т.е. ты в общем случае можешь сделать constexpr int number = 1488, но не сможешь сделать constexpr Mamka tvoya_mamka = calculateMamka (). Чтобы было можно, нужно наложить на calculateMamka () дохуя ограничений, даже если она вычисляется на этапе компиляции. Правда, они ослабляются с каждым новым стандартом. В C++11 было необходимо делать тело из одного оператора return, сейчас уже их меньше, если не ошибаюсь. Ну и поддержка constexpr еще не везде полная есть.
>>518832 >А нужен блог, чтобы отдельными маленькими статьями разбирались подводные камни, без синтаксиса и прочей хуйни. >без синтаксиса Я конечно извиняюсь, но ньюфагам во многом синтаксис и нужен.
>>518835 Вот не соглашусь здесь. Если структура используется как тип и только как тип, без единого метода (кроме быть может дефолтного конструктора), то целесообразно объявить её Struct() {} даже без private public, т.е. пусть будет публичной по умолчанию. Что, жалко, что ли? Откуда ты знаешь, как ты будешь использовать её потом?
Вся вот эта мания сделать всё приватным, а потом при необходимости налепить геттеров/сеттеров и/или друзей/наследников мне непонятна. Иногда структура это просто тип, считай двумерный или более тип. Использоваться может где угодно.
>>518885 >Я конечно извиняюсь, но ньюфагам во многом синтаксис и нужен. С моей скромной точки зрения, помимо написания кода на практике что, конечно, самое главное%, обучение языку складывается из изучения синтаксиса, библиотек и тому подобного и изучения "духа" языка - типовых проблем, хаков, паттернов, если угодно. В шапке первый раздел, грубо говоря, отвечает первому из этих пунктов книжки для ньюфагов, в основном, про синтаксис, если там и есть паттерны программирования, то самые простейшие, и их мало - поэтому прочтения книжек для ньюфагов недостаточно, хотя синтаксис они покрывают почти полностью%%. Второй раздел соответствует "духу", но тут проблема в том, что этих мелких деталей, которые в конечном счете определяют опыт погроммиста, очень много, в книжку они не влезают, да и формат не тот. Поэтому, например, Мейерс покрывает это только отчасти, а чтобы набирать опыт дальше, нужно кодить и решать какие-то повседневные задачи. А если просто кодить и не делать никаких выводов, то так и останешься говнокодером. Задумается ли ньюфаг после прочтения книги "C++ за 21 день", какой контейнер STL ему применить и почему? Да вряд ли, он будет хуярить везде vector и list, не задумываясь о деталях. Или какие-нибудь зубодробительные правила для выведения типов - об это энивей нужно обжечься сначала, или ты просто не поймешь, зачем вся эта скукота нужна. Ну и поэтому правильным мне кажется гуглить возникающие вопросы и смотреть, что на эту тему пишут на всяких stackoverflow, ну и в блогах, конечно. А заодно и почитывать блоги независимо, там формат как раз подходящий - небольшие, законченные статьи, каждая раскрывает свою тему. Никто не говорит, что блоги должны заменять книги, или тем более практику. Они не заменяют. Но и книги не заменяют блоги, хотя бы уже потому что блоги обновляются гораздо чаще, чем книги, а их количество больше.
>>518935 Хорошая идея. Я могу детально расписать за Visual Studio, если кто-нибудь запилит гайд по настройке чего-нибудь никсового для нюфань, то будет совсем здорово.
>>518709 Вопрос такой: прокатит ли такой ответ на собеседовании? Строка вводится как "абв", выводится как "вба". Условия задания соблюдены и мое решение гораздо проще и короче, чем у >>517661 . Вот твой гребаный пейстбин http://pastebin.com/Gyav00VF
>>519040 >std::reverse(st, st + strlen(s)); у нас за такую хуйню тоже нахуй убивают. У меня за один проход по массиву выводится строка в обратной последовательности, у тебя - два прохода плюс изменение данных в памяти. Из-за таких вот мелочей потом прибегает заказчик с выпученными глазами и криком "Сука, почему у нас на продуктиве все тормозит?"
>>519176 > Не понимаю смысл static_cast Удобней искать в проекте. Тебе захотелось посмотреть где ты кастишь к инту - ищешь static_cast<int> - при других способах могут вылезти проблемы (ложные срабатывания). Ну и более заметная запись. Преимущества только в синтаксисе, никаких особых свойст у static_cast нет (по сравнению с старыми способами каста).
>>518004 Вопрос от нюфани: на каком этапе из оп-поста можно пытаться монетизировать знания и навыки полученные при прочтении книг и выполнении практических задач из них, путем устройства на работу или подфрилансить не много где-нибудь?
>>519367 Алсо я пока только массивы в Лафоре читать закончил, но я твердо настроен выучить кресты и работать на них, пока что всю инфу схватывал не напрягаясь.
>>519367 После второго пункта и пары самостоятельно написанных средних проектов тысяч на пять строк, которые решают не совсем искуственные задачи какие-нибудь игры, например ты будешь твердым джуниором. Дальше просто читать книги нет особого смысла, надо начинать работать над реальными проектами уже.
>>519219 Тут одно и то же. Первое это приведение в стиле С, оставили для совместимости с этим языком. Второе уже чисто С++, Страуструп писал, что он специально создал такой уродский синтаксис, чтобы его не хотелось писать и легче было найти в коде.
>>519055 Когда std::end начал работать с char*? Длину строки он подгружает из головы пользователя с помощью libastral.so? >>519057 Обоссал обиженку. Ты знаешь, что за буйство внутри ostream::operator<<? Никто не использует стандартные потоки для ввода-вывода, кроме авторов laba2 вроде тебя, тем более поэлементно. Иди и померяй сколкьо твой "быстрый" вариант работает. Тормозят у вас на продуктиве только девелоперы.
>>519524 algorithm требуют, чтобы в строках не было терминальных символов. И это правильно, потому что строки из терминальных символов практически никогда не нужны, а их отсутствие позволяет реализовать тот же reverse проще, чем с дополнительным расчетом длины. Так что твой пример по стандарту будет UB, и ничего удивительного в том, что все ломается.
>>519589 >можно ли как то изменить внешне Qsystemtrayicon::Showmessage Только если рисовать вручную. Короче, считай что нельзя. >как его задать Указав через запятую после второго. В чем проблема?
>>519622 Очень жаль, людям не очень нравится обычный вид мэсэджа. :(
Я не могу понять в каком виде. У меня есть что то типа: trayIcon->showMessage("USER", fio); Что дописать надо? Создать переменную: MessageIcon icon; и дописать: trayIcon->showMessage("USER", fio, icon = QSystemTrayIcon::Information); Или icon = 1? Вместо QSystemTrayIcon::Information можно написать любой отсюда http://doc.qt.io/qt-5/qsystemtrayicon.html#MessageIcon-enum?
>>519628 Может, для начала тебе стоит изучить основы языка C++? Почитай учебник, выполни задания, чтоб таких вопросов не возникало. Прата вполне подойдет.
>>519564 Ты какой-то юродивый. Я там нули поставил, чтобы небе очевиднее было, что std::end предназначен для работы с массивами, а не со строками. Вот менее очевидный пример, где нули после литерала поставил компилятор, а не я сам. > char c[] = "123"; > std::cout << "strlen = " << strlen(c); // 3 > std::reverse(std::begin(c), std::end(c)); > std::cout << "strlen = " << strlen(c); // 0 Он тоже не работает. И не будет работать. С буферами не будет работать. Со введёнными пользователем строками в эти буферы не будет работать. С литералами не будет работать. Ни с чем не будет работать. UB только у твоих папки с мамкой по пьяни было, когда он на гандоне воздух из спермоприёмника не выдавил.
Смотрите на меня и смейтесь. Буду рад, если поможете. Есть код программы. В ней вводятся с клавиатуры две переменные. Первая это переменная типа char символ, который будет напечатан N число раз. И переменная int, то самое кол-во раз. Все работает хорошо. Но вот есть в этом коде место, которое я понять не могу. Меня смутила объявление указателя типа char и его дальнейшая инициализация Прилогаю код, в нем закоментировал ход моих мыслей. Если где-то я не прав, поправьте пожалуйста.
>>519696 Функция buildstr возвращает не массив а указатель на него. Пробей больше инфы про то как работают указатели и строки в C. Так ты нихуя не поймешь.
>>519696 Присоединяюсь этому >>519698 джентльмену, массивы в плюсах это плохая штука, которая плодит долбоёбов вроде >>519564 Привыкай сразу работать с контейнерами, итераторами, указателями, референсами и почитай про сишные строки. > while (n --> 0) kek
>>519698 >>519702 От как жопой чувствовал, что при изучении С++ придется С учить. Ну никак не хотелось. Да простите, это у меня уже шарики за ролики едут, после чтения книги с 9 утра. Как даже видно из прототипа функции char buildstr(char c, int n) ее возвращаемое значение это указатель. Массив это указатель, адресом которого является, адрес его первого элемента. Меня смутило объявление указателя и сразу его инициализация через возвращаемое значение функции char ps = buildstr(ch, times); Как я писал до этого, мне понятнее char * ps = new char; ps = buildstr(ch, times); Благодарю за советы.
>>519718 char buildstr(char c, int n) а не char buildstr(char c, int n) и char ps = buildstr(ch, times); а не char ps = buildstr(ch, times); Что-то символ * потерялся.
Я знал, что при объявлении массива его можно инициализировать. Но объявление http://pastebin.com/P1jduxg5 в моем тупом мозгу ассоциировалось с разъименовывание указателя *ps = pstr (pstr - адрес указателя) Просто субъективное восприятие, которое пришлось и приходится подавлять у себя в мозгу.
>>519771 Мне не выдает ошибку. Вот код. >>519696 Там где большой комментарий. Там происходит объявление и инициализация указателя значением, возвращаемым функцией buildstr. Мной такой синтаксис не воспринимался. Мне понятнее было http://pastebin.com/bG8LaYhm Думаю хватит мне флудить и уделять этому вопросу много внимания. Я уже все понял и разобрался.
>>519176 > Не понимаю смысл static_cast. Знает кто примеры где без него нельзя обойтись? Да. Прочитал ты такой в std::string проксоренную строку. Строку проксорили — там есть char-ы с любым значением, от -127 до 128 (в случае дефолтных знаковых char-ов)
И хочешь произвести частотный анализ. Используешь символы из строки как индекс в массиве и вылетаешь за границы, т.к. знаковый отрицательный char превращается в отрицательный индекс.
>>519775 не понимаю почему тебе так было понятнее. Ты знаешь что делает new char? если ты так напишешь у тебя в памяти будет висеть неиспользуемая и недоступная переменная
>>519788 Ну не суть. Если тебе интерестно баловаться с данными. Создавать и изучать разные структуры данных и организации памяти, собственные устройства, тебе будет интересен C и C++. А если нужно обычное приложение подойдут и более простые языки.
>>519789 Только на самых ранних стадиях развития. Я говорю про сегоднящний день.
>>519799 >Это уже сильно разные языки. Пока все что написано на C справедливо и для C++ я бы не назвал эти языки разными. >>пора бы уже std::string везде Для работы со строками конечно лучше использовать string. Как char* строки используют наверное только при обучении. >забыть про new/delete и как ты собираешься динамически работать с памятью?
>>519803 >Пока все что написано на C справедливо и для C++ Допустим, вот функция void f(); Какое число аргументов она принимает в C и какое в C++? > и как ты собираешься динамически работать с памятью? unique/shared_ptr или просто выделять на стеке и возвращать/передавать. Когда надо, компилятор или скопирует, или переместит значение.
>>519803 Здраствуйте, поступила просьба ознакомить ньюфага с RAII. Такое дело вообщем, в с++ стековые переменные удаляются по выходу из скоупа епте, а для объектов вызывается даже деструктор. Именно так работает vector, он динамический, но delete же ты для него не используешь? Или как? Ну вообщем хуяришь все объекты в смартпоинтеры и забыл про delete.
>>519806 Ну это уже более высокий уровень абстракции. Я имел в виду что для написания собственного контейнера, который будет динамически выделать память, без new/delete не обойтись. Потом конечно можно забыть про них. Но если изучать язык с нуля неплохо бы знать о них, вместо слепого использования уже готовых контейнеров.
>>519811 Будем откровенны : если ты пишешь на плюсах или там джаве или шарпах, тебя вряд ли понадобится писать свои контейнеры. Если хочешь написать либу, есть C. Си это мощь и простота работы с памятью, с++ высокоуровневый язык для гуая и прочего такого. Это ад дебажить с++ код, активно использующий работу с памятью.
Выделяет область памяти в куче под переменную указатель. Затем эта переменная указатель инициализируется возвращаемым значением функции. Тот указатель (массив) что создается в функции, память под него удаляется, как только функция отработается.
>>519734 > Мне понятнее так Нихуя у тебя не понятнее, у тебя в первом сниппете утечка памяти (если закрыть глаза на синтаксис). Подавляй у себя в мозгу интуитивное понимание языка, ты до этого ещё не дорос. >>519904 На самом деле ты нихуя не понимаешь. Иди перечитывай учебник > Тот указатель (массив) что создается в функции, память под него удаляется, как только функция отработается. У тебя _очень_ плохое понимание времени жизни переменных.
>>519907 > у тебя в первом сниппете утечка памяти Да new char выделяет память, но эта память ничем не инициализируется так? > У тебя _очень_ плохое понимание времени жизни переменных. Не пойму то ли я жопой читаю, то ли меня наебывают.
>>519910 new выделяет память в куче. Неважно инициализировано она или нет. Память ты выделил, но не удалил. >>отведенная под указатель pstr (НО НЕ ПОД САМУ СТРОКУ), освобождается Когда ты пишешь char ps; под этот указатель выделяется память в стеке, она удалится по выходу из скоупа, но не то, на что она указывает. Твой код равносилен этому: char ps; new char; // утечка ps = buildstr(ch, times);
>>519927 Спасибо, не знал, что так можно использовать new. И не знал, что можно объявлять указатель, без его инициализации. Это многое объясняет. >Освобождается память, отведённая под указатель, а не под саму строку, жопой читаешь, да Вопрос тогда в том, как удалить память выделенную под строку?
>>519910 > Да new char выделяет память, но эта память ничем не инициализируется так? Да, так и что дальше? Утечка никуда не делась. > Не пойму то ли я жопой читаю, то ли меня наебывают. Жопой читаешь. Посчитай на листочке, сколько памяти выделено, и сколько освобождено. >>519934 Блядь, как ты не знал? Ты читал учебник? Многое ему объясняет. Там где есть new, там должен быть delete. Запомни простое правило.
>>519995 Я не корректно выразился. Я не знал, что так можно выделить память под указатель, как было описано в посте >>519927 То, что память выделенную, надо отчищать при помощи delete это я знаю. В учебнике всегда давали такой синтаксис, при выделении памяти. Там объявляется указатель, и сразу же инициализируется выделенной памятью. Затем память отчищается с помощью delete. http://pastebin.com/w3gicxSN
>>519694 Оу. Вот это я обосрался. Этот джентльмен абсолютно прав, а я раньше не задумывался над этим и всегда на автомате считал, что end у c-like строк укажет на терминальный нуль и меня спасло только то, что я никогда не переворачивал c-like строки, а использовал string. Вот я хуиная голова, лол.
>>520121 Так полиморфизм в этом и состоит что у твоего men какбы вроде и нет хуя (хотя на самом деле ечть). Объект класса Men выглядит полностью как объект класса Human (тоесть без хуя), хотя на самом деле является объектом класса Men (тоесть с хуем).
>>520140 полиморфизм, друг мой, это не про "а как получает методы наследников", а про "а как наследник, вызывает метод, определенный в предке, который в свою очередь вызывает метод ПЕРЕОПРЕДЕЛЁННЫЙ наследником"
Полиморфизм это доступ к переопределенным твоими наследниками методам
>>520137 Ну так то понятно, а есть способ сделать функцию видимой только для одного наследуемого объекта? Допустим вот с таким способом у меня баба может увидеть функцию getDlinnaHuja(), которая ей нахуй не всралсь.
>>520147 И каким образом ты узнаешь кто у тебя находится в katka[1]? Скажем в товем примере это ясно, но в другом случае в katka[1] может оказатся как Man так и Woman и получится обосрамс. Ты хуйней занимаешся с такими массивами. Такое делать не рекомендуют. Если у тебя есть масив Human то работай с ними как с массивом Human.
блядь поцаны, скажите как сделать таймер нормальный? На форумах постоянно обсуждается SetTimer, но он не катит, т.к у меня нет хендла окна или че он там требует обязательно. А без него собсна KillTimer не работает. Пробовал выносить в отдельный поток CreateThread, но ваще какая-то хуйня выходит. Подскажите че нибудь, спасибо. (Sleep не катит, сразу говорю)
>>520170 -> >>520160 Допустим у меня есть класс лиса который хранит количество сожранных зайцев. Но я не хочу чтобы из зайца, который зайцев не ест, у меня была доступна эта переменная.
>>520167 >Ну на самом деле можно, добавить int tag в Human и кастить при использовании Откуда вы берётесь, идиоты? Тег добавить, кастить при использовании. Вообще охуеть. Есть стандартный механизм — dynamic_cast. Который проверяет что надо
>>520183 я говорю, что тогда KillTimer не работает. То есть не убивается созданный таймер, т.к без хендла не работает второй параметр, то есть id того самого таймера.
>>520184 > без хендла не работает второй параметр, то есть id того самого таймера. Чёт ты гонишь.
uIDEvent [in]
Type: UINT_PTR
The timer to be destroyed. If the window handle passed to SetTimer is valid, this parameter must be the same as the nIDEvent value passed to SetTimer. If the application calls SetTimer with hWnd set to NULL, this parameter must be the timer identifier returned by SetTimer
>>520153 Можно просто в реализации хумана для getHui возвращать nullptr, а в реализации мужика переопределить на возврат указателя на хуй. Только потом надо лепить проверки, что не nullptr, но как вариант.
Чуваки, я тут вчера по таймеру ныл, мол нихуя не выходит и вы мне посоветовали std::chrono. Окей, я никогда с ним не работал, поэтому начались проблемы нубские. Хочу, допустим, сделать, чтобы таймер выполнялся в отдельном потоке, да, ну чтоб не фризило саму программу. Делаю так, но все равно фризит: [code lang="c++"] int main() { std::thread thread(timer); thread.join(); }
>>520981 скорее всего да, С++ потихоньку перекатывается в специфичные области, где для нормальной работы требуется знания этих областей: сети, математика, электроника, телеком и тд.
>>521023 На самом деле С++ относительно сложный язык и что бы качественно на нем писать надо убить кучу времени. Если у тебя просто идея которая не требует еба графики или еба вычислений, то все таки лучше делай на питоне или на джаве тут даже под андроид сможешь запилить. >>521030 Да не пизди, нормальный язык просто у него есть своя специфика. Java это легко в изучении и трудей выстрелить в ногу, но расплачиваешься ресурсами что в 21 веке не так уж и важно чаще всего.
>>521056 >но расплачиваешься ресурсами что в 21 веке не так уж и важно чаще всего. То ли дело QT: к экзешнику на 3 мб прикладываешь либы на 40 мб. JRE весит 28 мб установочный файл.
поцаны, гуглил я как-то про std::thread. Мне, например, не нужно, чтобы он(поток) постоянно что-то там выполнял, а только при вызове делал свою работу и завершался. Вот, и хотелось бы узнать у вас, в основном все пишут, что потоки убивать не рекомендуется. А нормального ответа так и не увидел почему? Подскажите как быть.
>>521273 потому что создание и завершение потока - относительно трудоёмкая операция, лучше иметь определённое количество запущенных потоков и вести для них очередь (или отдельные очереди) задач на выполнение - гугли по thread pool
Репощу с закрепленного ньюфаг треда, надеюсь, что вы меня тут не обоссыте. (совсем не умею с классами работать пока что)
[code lang="c++"] class Token { public: char kind; // вид лексемы double value; // для чисел: значение Token(char ch) // создает объект класса Token // из переменной типа char :kind(ch), value(0) { } Token(char ch, double val) // создает объект класса Token :kind(ch), value(val) { } // из переменных типа // char и double }; [/code]
Вот и выходит, что эти два объекта будут записаны? (знак плюс и число) или же произойдет перезапись. Просто я не понимаю, перевод ли такой или я просто туплю.
>>521481 > Вот и выходит, что эти два объекта будут записаны? (знак плюс и число) или же произойдет перезапись. Просто я не понимаю, перевод ли такой или я просто туплю. Конструктор класса можно вызвать лишь один раз при создании экземпляра.
Антоша, реанимируй свои воспоминания о WinAPI. У меня возник вопрос: при обработке события WM_PAINT есть возможность перерисовывать не целое окно, а только определенный регион. Вот, к примеру, у меня окно с кнопками, списками, текстом и т.д.. Как мне перерисовать только заданную область?
Анон, читаю Лафоре. Дошел до 5 главы (Functions), раздел Passing a circle Structure.
Там есть пример, нарисовать кружок. Для этого нужен header консольной графики. В книге говорится: You’ll need to include the appropriate header file (MSOFTCON.H or BORLACON.H, depending on your compiler), and add the source file (MSOFTCON.CPP or BORLACON.CPP) to your project.
Естественно, ни один из вариантов у меня на DEV-C++ не работает. Гугл выдает форумы, где советуют что-то, что у меня не работает - компилятор ругается. Скачал graphics.h, но там какая-то внутренняя шняга, которая тоже компилятору не нравится (пикрелей). Кто из ньюфань сталкивался? Что делать анон? Спасибо.
>>521865 давно у меня дело было, хидеры подправь, там что типа заменить func(int right, int top, int right, int bottom) на func(int left, int top, int right, int bottom)
>>521867 Ах ты шайтан, все заработало! Спасибо тебе. Объяснишь ньюфане?
Я заметил, что потом там все как ты рекомендовал: void printimage( const char title=NULL, double width_inches=7, double border_left_inches=0.75, double border_top_inches=0.75, int left=0, int right=0, int right=INT_MAX, int bottom=INT_MAX, bool active=true, HWND hwnd=NULL ); void readimagefile( const char filename=NULL, int left=0, int top=0, int right=INT_MAX, int bottom=INT_MAX ); void writeimagefile( const char* filename=NULL, int left=0, int top=0, int right=INT_MAX, int bottom=INT_MAX, bool active=true, HWND hwnd=NULL );
поцаны, насколько адекватно было бы начинать читать перевод Майерса 2000-х годов, там же по сути информация различаться будет сильно от оригинала (2015 г.), так ведь? Подскажите просто, читать ли перевод или же превозмогать и пытаться понимать инглиш версию?
>>522073 Язык довольно сильно поменялся с тех пор, сразу новую версию будет лучше. В принципе можно прочитать старую а потом отдельно про новые фичи, но зачем? Хочешь быть программистом (не на 1c/php) - умей свободно читать технический английский. Без него ты говно ненужное.
>>522318 Для этого, но писать на нем - то еще удовольствие, да и говно мамонта. Юзай либо Qt (если хочется стильно, модно, не пугает порог вхождения), либо какие-нибудь wxWidgets (если надо попроще и без лишних заебок).
>>522329 не получится стильно модно на Qt - все приложения на Qt выглядят как говно (кроме приложений типа 2Gis, где допустим полностью нестандартный UI)
>>522331 Какие-то у тебя странные приложения, у меня все норм выглядит. Ну и вообще, если задача несложная - лучшим вариантом может быть выучить шарп. Раз уже знаешь плюсы, начать клепать формочки там можно буквально за пару дней. Ты не подумай, я не фанат шарпа, но более простого и без сюрпризов формошлепства пока не видел.
>>522344 Если верить википедии, из того, что я использовал за последние пару лет, Qt Creator, Octave, KeePass, VirtualBox и клиент близзардовский юзают Qt. Никакого недовольства внешним видом этих программ я не испытывал. Хотя мне обычно в принципе похуй, если не совсем как говно выглядит, это да.
>>522367 Да это даже не дело вкуса, просто насрать. Шрифты читаются, интерфейс более-менее понятный, кислотных цветов нет, лейблы за границы окна не вылезают - значит все норм.
>>522431 >>522432 Я походу допер. Окончательный результат у меня возвращается гдето в дебрях рекурсии. А функция которая была вызвана первой вообще по сути не имеет вывода, сейчас буду ковырять.
>>522367 Внешний вид интерфейса программы в первую очередь зависит от того, кто его проектирует и делает, а не от того, какая библиотека для этого используется, исключая, конечно, всякие крайние случаи. Плюс надо, чтоб он не тормозил. Были времена, когда все юзали или WinAPI или MFC, а программы выходили как с хорошим интерфейсом, так и с говеным. А раз ты такой эстет, то поведай нам интерфейс каких программ ты считаешь очень хорошим.
>>522481 я имел в виду нативный интерфейс и только посмотри на microsoft office, visual studio и т.п. - насколько они органичнее смотрятся в системе, чем говноподелия на qt
>>522584 Какая тебе еще нужна аргументация кроме твоей некомпетентности? Qt уже давно может в нативный look and feel, внутри него используется (кто бы мог подумать?!) винапи.
>>521827 > Как мне перерисовать только заданную область? http://stackoverflow.com/a/1781030 says: > Call GetUpdateRect() to get a rectangle that bounds the region to be updated. This information is also included in the PAINTSTRUCT (as the rcPaint field) passed to BeginPaint()
MSDN says: > The BeginPaint function automatically sets the clipping region of the device context to exclude any area outside the update region.
Берёшь и перерисовываешь. Всё, что не попадёт в рект, отбросится.
>>522884 Ну давай, разъясни мне преимущества обоссанного g++ в сравнении с icpc, обоссаного vim в сравнении со студией/clion Кукареку через 3... 2... 1...
>>522954 >>обоссаного vim в сравнении со студией/clion Ты хотел сказать божественного vim + grep + find. Такое чувство, что на плюсах писать не умеешь, эти хуилы не могут нормально шаблоны индексировать. А без этого vim + ctags + egrep + find хватает более чем. А учитывая, что студия ещё и не всегда всю иерархию вызовов показывает... А если ещё scan-build к этому, то все IDE просто сосут хуй. Ты сам-то чем пользуешься?
>>522593 хуле он там может? выше примеры программ приводили - говно все, то там панелька как из windows 95, то там тулбар жопный особенно весело про спермоклоуна - я-то давно уже перекатился на мак, винда только в виртуалочке
>>523142 Ну и при чем тут Qt то? То, что хуесосы не могут нормальный интерфейс склепать - проблемы их, а не фреймворка. У меня нормально все получается, нативно, хоть я и не особо уделяю этому внимание.
>>522593 >кроме твоей некомпетентности >внутри него используется (кто бы мог подумать?!) винапи. Ну охуеть теперь, а что, в программе для windows можно как-то не пользоваться WinAPI? Вопрос в том, везде-ли он используется и на сколько грамотно, но судя по тому какие выходят программы используется он далеко не идеально.
>>523194 >Ну и при чем тут Qt то? То, что хуесосы не могут нормальный интерфейс склепать - проблемы их, а не фреймворка Правильно, сначала напиши хуйню, а потом говори то, что только до этого >>522481 написали.
>>523464 Ты заебал, манька. Ты гонишь на инструмент, когда проблема не в нем, я тебе поясняю, что проблема в спермоклоунах, не могущих в этот инструмент. Что тебе еще не нравится? Съеби в ужасе, блять.
Оказывается, time это встроенная функция, хотя и требует #include <time.h>, но не стоит использовать это слово. А самое главное, time_t - это один из фундаментальных типов, поэтому декларация функции time_to_something выдается ошибка.
Здарова, парни. У меня к вам вопрос, можно ли после Страуструпа "Принципы и практика программирования на C++" идти изучать WinAPI и все остальное Рихтера? Просто уже хочется чето попилить, интересно же. Или лучше Майерса сначала читнуть придется? А можно ли совместить? Короче, добрые аноны, нужна ваша помощь, спасибо.
Сильно не пинайте, но что насчет IDEs? После жабы очень неудобно переименовывать переменные и функции: там такой хуяк, refactor-rename и все везде переименовалось, а тут в один раз в классе переименовал, а потом бегай в методах руками опять снова все переименовывай. MSVS2010EE
Нужно написать пару тройку гуевых программ, которые будут обмениваться инфой по COM порту и отображать всякую инфу. Что лучше выбрать: 1. QT 2. C++ Builder Кроссплатформенность не нужна, достаточно винды.
А есть ли тут те, кто пишет каждый день на с++ за деньги в большой фирме? Особенно те, кто переучивался, скажем, с инженера. Поделись кулстори, как дошел до такого?
Поясните, я изучаю основы С++, не совсем понял что я неправильно написал: while ((friend_sex != 'm') || (friend_sex != 'f')) { cin >> friend_sex; } Хочу сделать проверку - если friend_sex != 'm' или friend_sex != 'f', то чтобы я вводил его, пока я не введу f или m. Но в моём случае даже если я ввожу f или m - всё равно не продолжается скрипт.
>>523973 В этом случае у меня вылетает ошибка - пик.
>>523976 Спасибо, так работает, но почему? У нас же одинаковые выражения, просто, в твоём случае не вынесено на скобки? Кстати, ты что, монитор фоткал?
>>523995 Не совсем понял? Мне в задании написали: >Объявите переменную типа char Я пробовал в одинарные ковычки ставить чар, мне писало ту ошибку - вроде одинарные ковычки меняют тип чара во что-то другое? Я сам изучал несколько лет назад пхп и неплохо его знаю, помню что в двойных работает код, в одинарных нет.
>>524018 Ну пущай возьмет да начнет пилить гуйцы там, или хрень какую с сокетами, или с базами, или с gpu. Просто возьми интересующую тебя тему, придумай таск и вперед.
Анон, как правильно пользоваться ебучей функцией CreateFont? Я хочу просто получить 14 размер шрифта, и что я вижу: int fontHeight = -MulDiv(Size, pixelsPerInch, 72); int SetMapMode(HDC hdc, int fnMapMode); логические единицы и т.д. что все это за хуйня?
>>523964 В юнити сложность не в самом знании языка, там надо знать саму среду. То есть можно знать основы шарпа и js, и просто искать готовые скрипты и исходя из них уже делать что то свое.
>>524000 >вроде одинарные ковычки меняют тип чара во что-то другое?
'а' это переменная типа char, а не чаровский массив, который строка. только 1 символ может быть в ' ' "a" это уже строка типа char *, потому что в си нет стрингов, и строки там работают через указатели на элементы чаровского массива.
Сап плюсаны. Дошел вот в книжке до главы, посвященной перегрузке стандартных операций. Не пойму, в чем косяк в одном из упражнений. Надо сделать класс Time и перегрузить для него операции "++" и "--" в префиксной и постфиксной форме. Вот листинг: http://pastebin.com/wTd9F25N Почему-то не работает постфиксная форма, хотя сделал как написано в книжке, путем добавления (int) в конец строки с ключевым словом operator. Результат работы проги: >Задаем значение объекта t1 13:15:45 >Задаем значение объекта t2 12:21:8 >Результат сложения t3 = t1 + t2 1:36:53 >Результат ++t1 13:15:46 >Вычисляем t3 = t1++, выводим t1 (верное значение) 13:15:47 >Выводим t3 (неверное значение, должно быть 13:15:46, т.к. типа постфиксная форма "++" в присваивании 13:15:47 >Результат --t2 12:21:7 >Вычисляем t3 = t2--, выводим t2 (верное значение) 12:21:6 >Выводим t3 (неверное значение, должно быть 12:21:7, т.к. типа постфиксная форма "--" в присваивании 12:21:6
>>524255 А что именно непонятно? Объект класса Time это типа время, три поля: часы-минуты-секунды. Для операций над этим объектом время преобразуется в одно значение -- секунды, к нему че-нить прибавляется или отнимается, потом обратно преобразуется в часы-минуты-секунды.
>>524252 Я вроде разобрался, но, честно, не ожидал, что можно сделать так по-ебанутому. Посмотрев на другие примеры и на решения других аффтаров этого упражения, я пришел к выводу, что если мы хотим перегружать именно постфиксную форму, то надо в коде перегруженного оператора использовать постфиксные выражения инкрементирования. Т.е., сука, надо писать не i = i + 1, return(i); а именно , сука, return(i++); Честно, у меня просто нет слов от этой ебанутой логики. До сего момента я понимал, в целом, всю инфу, касательно языка-синтаксиса. А просто в ахуе.
>>524280 Отличаются ли чем-нибудь с практической точки зрения (кроме наличия/отсутствия деструктора) thread_local указатель и thread specific storage (функции tss_… в c11 и pthread_key_… в posix)? Для чего вообще в стандарт добавили tss_... , если есть thread_local? Что лучше использовать?
Нужно нарисовать форму со своими кнопками свернуть/развернуть/закрыть, т.е. переделать их вид типо как в aimp или winamp сделано. Как это можно сделать с помощью QML?
>>524287 Как ты собрался перегружать инкремент объекта класса просто написав i++ к одной переменной? >надо писать не i = i + 1, return(i); а именно , сука, return(i++);
Это вообще разные вещи. i = i + 1; return i; это префиксный инкремент. А return i++; постфиксный
>>524390 Мне непонятно, почему "префиксность" и "постфиксность" перегруженной операции завязаны на "префиксность" и "постфиксность" кода оператора. Нахуя так делать? Вот же есть ключевое слово (int), пусть оно и указывает на форму инкремента, независимо от того, что там в коде оператора. Я так полагал, что это самое (int) указывает, что надо сперва присвоить значение переменной/объекту слевы от знака "=", а потом уже проводить вычисления над инкрементируемой переменной/объектом. Либо я что-то не до конца понимаю, либо это какой-то пиздец.
>>524440 Ты запутался. Дело не в форме кода оператора. (int) указывает на то что перегружен постфиксный оператор, больше нихуя он не делает. Если в коде встречается ++t то вызывается operator++ если t++ то operator++(int), все. Постфиксный оператор должен возвращать неизмененное значение . Выражения i = i + 1, return(i); и return(i++); не равноценны. Первое возвращает увеличеное на 1 число. Второе возвращает неизмененное число (и увеличивает его на один). В коде постфиксного оператора инкремента нужно сохранить старое значение, увеличить на еденицу, и вернуть сохраненное сторое значение. Твой operator++(int) должен выглядеть примерно как: Time operator++(int) { Time temp(h,m,s); int seconds = (h 3600) + (m 60) + s; seconds++; h = seconds / 3600; m = (seconds - (h 3600)) / 60; s = seconds - (h 3600) - (m * 60); if (h > 24) { h -= 24; }
>>524440 >Мне непонятно, почему "префиксность" и "постфиксность" перегруженной операции завязаны на "префиксность" и "постфиксность" кода оператора. Нахуя так делать? Блять потому что это логично? Нет? А если ты перегружаешь, к примеру, оператор == тебя не будет смущать что он же будет использоваться в коде перегрузки? >Вот же есть ключевое слово (int), пусть оно и указывает на форму инкремента, независимо от того, что там в коде оператора. Так и есть. Если ты хочешь можешь сделать чтобы префиксный инкремент добавлял к переменной 1 а постфиксный 2. Да вообще все что угодно можешь туда написать.
Поцаны, а где можно почитать про сетевую часть? Никогда в жизни не работал с сетью на крестах, но очень хочется. Сокеты там, http и всякие свистелки. Подскажите, пожалста, где можно найти статьи, а может даже есть какая книга по всему этому делу?
Есть тут кто? Я нуб, есть вопрос. Изучаю по Страуструпу, начинаю делать 1 задания, но у меня возникает ошибка, или, скорее я не знаю как сделать: Я хотел сделать так, что если вводишь что-то кроме f или m, то выдавало бы ошибку. Я сделал такую конструкцию:
while ( (friend_sex != 'm') && (friend_sex != 'f') ) { cin >> friend_sex; cout << "Enter f or m: "; }
Но! В этом случае если я верно - идёт следующий шаг, но cout всё равно выводит "Enter f or m: ", что я не так сделал? Ввёл f например, а конструкция выводится. Номер 1 на пике. Кстати, если ввести слово, то выводится столько этих конструкций, сколько символов в фразе.
>>524447 Большое спасибо за развернутый ответ, так стало намного понятнее. Добра тебе.
>>524442 >>524460 Ну, сам я не допер, а в книжке этот нюанс разжеван не был. В некоторых вещах, бывает, начнешь думать в одном направлении, не замечая другого и упираешься.
>>524651 Зачем тебе вообще там цикл? Почитай внимательно что у тебя написано в while. Там будет true что бы ты не нажал. Поэтому и получается бесконечный цикл.
Поясните опять что я не так делаю? Я уже всё испробовал и посмотрел свою прошлую программу - всё должно работать: почему после ввода k программа не выводит - введите сколько километров т.д.? А просто мигает пустым символом ввода?
Правильно ли я начал реализовывать методы шаблонного класса? Что я делаю не так в последнем методе? Ошибка:
error C2664: Item::Item(const Item &): невозможно преобразовать параметр 1 из "Item " в "const Item &" 1> Причина: невозможно преобразовать "Item " в "const Item" 1> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
В чистом С ведь нет ООП, но можно сделать псевдо ООП помещая в структуру не функцию, а указатель на неё или ещё какими либо способами. Тогда Можно написать структуру в которой функция. Прогнать через какой-то волшебный персер который превратит её в указатель. А потом получившийся исходник скомпилировать на чистом С. Значит таким образом можно и перегрузку имён сделать и повысить уровень языка ме потеряв в скорости т.к. используется компилятор С. Это можно считать новым языком? Что-то похожее ведь сделали. Как это называется и почему оно ещё не вытесняло С?
Анон, я заебался, клянусь. Я уже graphics.h выучил наизусть, и гугл меня встречает как родного, но все равно - то одна поебота вылазит, то другая. Никак ебаный кружочек не нарисую. А сейчас вообще вылетает на выполнении initwindow.
>>524718 Можешь запустить экзэшник из консоли и перенаправить вывод в файл? Хуй знает что у тебя за проблема. Это у тебя консольная графика должна быть из книги лафоре?
>А это как? В винде это вроде делается так. file.exe>file.txt Перед этим зайди в папку с экзэшником. Если не сработает попробуй .exe убрать и/или start в начале приписать.
Это скорее всего не поможет. Просто интересно будет ли такая ошибка если консоль не трогать и как консольная графика ведёт себя с файлами.
>>524715 > Что-то похожее ведь сделали Да. > Как это называется С++ и Objective-C (старые трансляторы) > почему оно ещё не вытесняло С Там где используется С ООП нинужно. Там где нужно ООП можно навернуть джаву или шарп.
>>524752 > Какие отличия Objective-C Отличия минимальные, добавлена только работа с объектами (определение объекта, посылка ему сообщений, протоколы и категории). Правда большинство кода как раз и состоит из ебли объектов, по-этому objC код мало похож на сишный. Ну и там по мелочи есть импорт, литералы. Добавлены блоки (лямбда/замыкания) - но это эпловское расширение языка С. И все. А swift он по синтаксису ближе к С но в общем дальше ушел, так как более современный.
Я всё никак не могу решить свою задачку про километры. Я тут расписал булеан, всё правильно? Т.е. в случае ИЛИ - если есть хоть 1 ТРУ, то команда проходит. Не проходит только если все ФАЛС. В случае И - если хоть 1 ФАЛС, то автоматом не проходит команда. Так?
>>524882 Сам нагуглил как работают команды типа вайла или ифа, вычислил как работает булеан методом проб и ошибок, потом перенёс и заменил значения как бы это работало в программу... И всё заработало как надо! кун->>524670
Подскажите, я решил сделать так, что в зависимости от введённой буквы брался бы и тип переменной: if (symbols_select == 'd') { double val1; double val2; } if (symbols_select == 'i') { int val1; int val2; } val1 = 0; val2 = 0;
Но в этом случае пишет что там где val1 = 0; что она не объявлена еще на стадии запуска программы. Но у меня дальнейший код настроен так, чтобы работать и с даблом или с интеджером. Получается мне его 2 раза копировать и каждый в свой ИФ кинуть?
>>524961 Почитай про области видимости. То что ты хочешь сделать можно только классом навернуть, ну или в зависимости для чего может юнион еще подойдет.
>>525034 Ой, немного не так, в общем такой код: balance = num % 2; if (balance != 0) { cout << "test"; } Если тест в одиночных кавычках, то выдавало это число.
>>525038 Я понял что вы мне поясняли в прошлый раз - в двойных кавычках получается как массив чара, в одиночных - 1 символ, так? Я, просто, не совсем понял как это работает - т.е. ковычки ВСЕГДА чар?
>>525035 Чот в голосину с тебя. Тебе в варнингах ничего не выдали? cout конечно умный, но не настолько, чтобы ты разбрасывался кавычками как тебе угодно.
>>525126 Разбираться в электронике и ЦОС. Знать, как работает периферия в М.П. Задача сделать FSK модем на 16/32 битном М.П. с исправлением ошибок тебя не должна пугать. Это высокий уровень.
>>525140 >Есть способ этому учиться не покупая этих железячек? Невозможно. Заказчик тебе пришлет макет, под который надо прошивку сделать - а ты проц впервые видишь и не понимаешь куда припаять вот это туда. Готовь деньги, паяльник и прямые руки. Сэкономить на отладочных платах сложно, но можно. Хорошая плата для STM32 стоит 100€. Для AVR дешевле существенно. А в принципе всё это копейки.
>>525157 Первый создастся на стеке и будет удален по выходу из функции. Во втором случае на стеке создан будет указатель, а сам объект в куче. Указатель по выходу из функции так же будет утерян.
Возвысился крестов угрюмый вал,
Отпором быдлу яростным грозящий.
И тот, кто вел меня, ввысь указал:
"Взгляни: взвились, узрев тень говнокода,
Три фурии, которых Он призвал.
Инкапсуляция затмит в обитель входы,
Наследование - средняя из них -
Даст пришлецам вкусить чужого плода,
Полиморфизм поглотит суть". И он затих.
Литература:
Для нюфань:
Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один,
который больше приглянется.
Герберт Шилдт - C++. Базовый курс (2010) - http://goo.gl/qMLAFl
Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - http://goo.gl/QvjR6x
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Для желающих сразу начинать с Откровений Создателя - классика (может показаться суховатым):
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2009) - https://goo.gl/87qXtW
Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
Скотт Мейерс - Effective Modern C++ (на ангельском) (2015) - https://goo.gl/uImH0J
Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт языка (на ангельском) - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
Тонкости языка (для гурманов):
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC
Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
Также для легкого чтения подойдет книжка c историей создания C++:
Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo
Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD
Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - http://goo.gl/0M4NpG
Ссылки:
Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru/
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/
Блог Герба Саттера (на ангельском) - http://herbsutter.com/
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru/
Памятка:
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.
Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode
Предыдущий: