Ответы пользователя по тегу C++
  • Какой онлайн курс С++ лучше всего выбрать?

    @poslannikD
    Java/C/C++ Programmer
    Если без издевок, то нет такого ресурса по с++.
    Есть куча сайтов на которых можно порешать задачи с проверкой на с++, но там нет теории. Есть сайты с теорией но нет практики.
    Типичный путь в плюсах был описан в одном комменте на хабре, достаточно правдаподобно.
    Путь любого плюсера:
    — Должен начинаться с чего-то простого и понятного. Например книжки Кернигана и Риччи по С. Или же C++ By Dissection by Ira Pohl — великолепная книга, где все простенько и со вкусом.
    — Можно продолжить пробежавшись по глазам по книге одного из универсалов (Шилдта к примеру). И очень часто консультироватся с талмудом Страуструпа.
    — А уж потом, Майерс, Саттер, Александреску, которые давным давно объяснили всю эту уличную магию и разложили по полочкам.
    — А еще профи плюсеры любят читать Dr. Dobbs Journal


    Из онлайн справочников я бы добавил https://ravesli.com/uroki-cpp/ там можно подсмотреть какую либо тему если в вышеобозначенных книгах она непонятна расписана.
    Ответ написан
    Комментировать
  • Вопрос по синтаксису Qt?

    @poslannikD
    Java/C/C++ Programmer
    Это вопрос по синтаксису с++ )
    QLabel *label = new QLabel("Привет");
    label-> show();

    давайте разберем построчно
    1) QLabel("Привет"); - создали экзепмляр класса QLabel
    2) new QLabel("Привет") - оператор new выделяет память в куче, размещает там объект
    QLabel("Привет")
    и возвращает указатель на адрес в куче. По этому адресу расположен наш объект
    3) = new QLabel("Привет"); - оператор = выполняет присваивание(или инициализацию в зависимости от контекста). Присваивание(инициализация) чего ? Присваивание(инициализация) правого операнда. Присваивание(инициализация) чему? Присваивание(инициализация) левому операнду.
    4) QLabel *label - объявили указатель, который может указывать на объекты класса QLabel.
    5) QLabel *label = new QLabel("Привет"); -читаем с Права на лево создали объект, разместили его в куче, адрес объекта передали указателю типа QLabel который расположен слева от знака =
    Я так понимаю что [*label] это указатель на адрес объектов которых в дальнейшем будет много наверное

    Это указатель на адресс ОБЪЕКТА, этот указатель в один момент времени указывает только на ОДИН объект. так как отсутствует ключевое слово const то, да он может указывать на разные объекты. Но в конкретный момент времени он указывает только на один объект или вникуда

    label-> show();
    - обращаемся к объекту через УКАЗАТЕЛЬ на этот объект

    SomeClass a; //тут создается объект на основе класса
    SomeClass *p = &a; //это указатель на адрес объекта чтобы через него // вызывать методы класса

    1) SomeClass a; - объект создается на СТЕКЕ, не рекомендуется создавать тяжеловесные объекты на стеке, а легковесные можно.
    2)SomeClass *p = &a; - указатель указывает на объект на стеке все норм :)

    Различие между
    SomeClass a;
    и
    new QLabel("Привет");
    в том что объект а существует на стеке, а QLabel("Привет"); в куче
    Ответ написан
    Комментировать
  • Как поместить все файлы в один exe?

    @poslannikD
    Java/C/C++ Programmer
    картинку можно запихнуть как строку, массив, структуру которые хранят цвет пикселей, прозрачность.
    Звук скорее всего можно запихать аналогично.
    Но лучше просто ложить ресурсы рядом с exe и не париться. Сделайте папку звук, папку картинки и загружайте их в программу по мере необходимости, это легче чем тащить все в один экзешник.
    Ответ написан
    Комментировать
  • С чем связанно такое поведение программы?

    @poslannikD Автор вопроса
    Java/C/C++ Programmer
    В коде были глупые описки типа
    byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);

    а надо было
    byte1 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte2 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte3 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);
        byte4 = new Button(ButtonType::ONLY_TEXT_BUTTON, this);

    соответственно в корневой layout добавлялся указатель указывающий не на что :(
    + один слот не был объявлен и определен, но была попытка использовать к нему коннект
    После исправления всех глупых ошибок код заработал :(
    Ответ написан
  • Кто может объяснить как создаётся софт для игр?

    @poslannikD
    Java/C/C++ Programmer
    Писал комент но вышел пост)))
    ПО для игр...читы
    -- если говорить о серьезных играх, тогда нужен asm. От этого не уйти ну ни как. Ах да artmoney можно засунуть себе в долгий ящик с устаревшими знаниями, так как уже есть игры на которых artmoney бессилен. И пригоден он только для правки значений в памяти на данной машине в данном сеансе, а если мы хотим написать ЧИТ который работает на всех машинах и даже после перезагрузки игры то увы asm, с++.
    С++ заменяется легко на C#, rust, go, python.... - в зависимости от того какая вам нужна итоговая производительность и нужны ли вставки на асме. Чит можно разбить на несколько программ это уже из области разработки по.
    Для веб игрушек javascript будет нужен.
    Общий начальный бэкграунд примерно такой:
    1) петцольд код
    2) карпов основы операционных систем. старая книга но даст общее представление об ос это то что вам нужно. потом иртегов и таненбаум(основы ос и распределенные системы)
    3) курс молодого бойца на ютубе. + курс по wireshark
    4) TCP/IP Illustrated/тык/ cisco cnna/ учебник олиферов
    _____До этого момента была просто теоритическая подготовка______
    5) Универсальным выбором по языку будет с++. Поэтому учить нужно его. Здесь рекомендация в пользу курсов на степике. Если в программировании плохи учите с# он легче, намного.
    6) После того как освоитесь с этим учите асм.
    7) Спец литра по реверсингу, крэкингу.

    Есть путь проще ищите видосы от gamthacklab на ютубе и учитесь по ним.

    кто может поверхностно объяснить как всё выполнятся
    - методик и подходов очень много, поверхностное объяснение здесь не катит
    Ответ написан
    Комментировать
  • Обязательно ли использовать указатели в С++ для игр?

    @poslannikD
    Java/C/C++ Programmer
    Обязательно ли использовать указатели в С++ для игр?
    - не хочу оскорбить но из вопроса следует что вы не понимаете механизм указателей, структуру программ в памяти, оптимизации и как следствие очень плохо ориентируетесь в с++.
    На данном этапе писать на с++ не стоит, если нет необходимости(универ, работа).
    У вас два выхода:
    1) посмотрите в сторону c#. На нем можно писать игры, в процессе чуть лучше освоитесь и будете готовы ко всем "плюшкам" с++. Тем более вы новичок и плюсы с++ вам пригодятся ох как не скоро, а излишняя сложность плюсов может отбить желание кодить, особенно у новичков
    2) откажитесь от затеи написать игру))))
    Ответ написан
    5 комментариев