• Удаление объекта в C++ без создания его через new, или можно ли удалять объекты взятием адреса (&)?

    @Mercury13
    Программист на «си с крестами» и не только
    > Объект BaseClassObj будет удален только по завершению программы.
    BaseClass baseClassObj;
    Здесь создаётся объект на стеке. Имя — это просто имя объекта. Никаких указателей здесь нет. Как только мы покинем блок (любым образом: штатно выйти, goto, break, выброс аварии — кроме «жёсткого» выхода из программы функциями типа exit), у объекта автоматически исполнится деструктор и прямой вызов не нужен. Блок, то есть подпрограмму BaseClassPresentation.

    BaseClass *BaseClassObjPtr = new BaseClass(2);
    Здесь BaseClassObjPtr это имя указателя (а не указатель на указатель). Объект создаётся в динамической памяти, и его придётся уничтожать вручную. Многое в Си++11 сделали для того, чтобы подобные объекты уничтожались не вручную, а всё теми же автодеструкторами.
    std::unique_ptr<BaseClass> BaseClassObjUp = new BaseClass(2);
    Это уже маленький объект со своим деструктором. А в деструкторе находится delete, и он сработает, как только программа выйдет из своего блока.

    То, что вы хотите, иногда бывает нужно, и я вижу этому две причины.
    1. Объект управляет какими-то сложными и важными ресурсами: большим количеством памяти, файлом, мьютексом… И этот важный ресурс бывает нужно освободить раньше, чем наступит деструктор. Например, у любого файлового потока есть функция close() — она закрывает файл.
    2. У нас сложное и хитрое управление памятью, когда приходится использовать placement new и прямой вызов деструктора. Скажу честно, не использовал никогда. Как и 90% программистов на Си++.
    Ответ написан
    9 комментариев
  • Удаление объекта в C++ без создания его через new, или можно ли удалять объекты взятием адреса (&)?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    BaseClass BaseClassObj;
    Объект создаётся на стеке и будет уничтожен(просто сдвинут указатель на вершину стека по факту) при выходе из области видимости(функции), попытки удалить его через delete будут приводить к UB, т.е. сказать, что произойдёт нельзя, да и незачем.
    Ответ написан
    1 комментарий
  • Как понять, что учить?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Начни делать интересный тебе проект и учи всё, что понадобится по мере его создания.
    Ответ написан
    Комментировать
  • Как записать 256 бит в массив из 16 слов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    for (int i = 0; i < 255; i++) {
      arr[i / 16] = (arr[i / 16] & ~(1 << (i % 16))) | (func(i) << (i % 16));
    }
    Ответ написан
    Комментировать
  • Как реагировать на письмо, которое пришло мобильному разработчику, от некой компании FMFG?

    Astrohas
    @Astrohas
    Python/Django Developer
    Вот официальный ответ от команды разработчиков Google:
    Здравствуй,
    Благодарим за обращение в Google Play.
    Если вы получили подозрительное сообщение с просьбой предоставить личную информацию, такую ​​как пароли или номера кредитных карт, или сообщение, в котором утверждается, что вы нарушаете новый патент EP2378800, вы можете сообщить это сообщение как фишинг. Если вы получили электронное письмо в своей учетной записи Gmail, вы можете выполнить следующие инструкции:
    Sign in to Gmail.
    Open the message you'd like to report.
    At the top-right corner of the message, click the down arrow next to the "Reply" button.
    Select Report Phishing.
    Если у вас нет учетной записи Gmail, но вы получили фишинговое письмо, отправленное пользователем Gmail, вы можете сообщить об этом, используя эту форму. https://support.google.com/mail/contact/abuse
    Вы также можете сообщить о фишинговом веб-сайте (веб-сайт, предназначенный для просмотра другой страницы в попытке украсть личную информацию), используя эту форму. https://www.google.com/safebrowsing/report_phish/
    Когда вы сообщаете сообщение как фишинг, Google исследует сообщение, чтобы расследовать эту проблему.
    Пожалуйста, дайте мне знать, если у вас есть другие вопросы или проблемы.
    Ответ написан
    Комментировать
  • Как реагировать на письмо, которое пришло мобильному разработчику, от некой компании FMFG?

    Домен notificationcommunicationpatent.com зарегистрирован в июне этого года, сайт notificationcommunicationpatent.com безграмотно оформлен включая копирайты, это не может быть сайтом юридической компании.

    Содержание патента не имеет никакого отношения к описанию на сайте. При этом патент скорей всего не имеет к вам никакого отношения к вашему приложению и у него совсем другой представитель:

    Reiser & Partner Patentanwälte mbB
    Weinheimer Straße 102
    69469 Weinheim / DE
    Ответ написан
    Комментировать
  • Как посчитать количество совпадающих символов в обоих строках?

    @Mercury13
    Программист на «си с крестами» и не только
    3 тоже есть, так что правильный ответ 3. Ошибка тройная.
    for(size_t z = 0; z < b.length(); z++){
            if(a.find(b[z]) != std::string::npos){

    1. Индексы строк в STL беззнаковые, и компилятор может ругаться на сравнение знакового целого и беззнакового.
    2. На что тут 4, если есть s.length()
    3. Знак «не найдено» — std::string::npos.
    Ответ написан
    3 комментария
  • С++ умирает слишком долго?

    @evgeniy_lm
    Гы-гы. Ну, я слышал, что Delphi уже умер, что JAVA ни сегодня так завтра помрет, но про С++ слышу впервые.
    Не боись, до твоей пенсии С++ доживет. Ну если не доживет, не велика потеря, реальному программисту без разницы на чем писать
    Ответ написан
    Комментировать
  • Можно ли в C++ передавать массивы в функцию сразу при объявлении?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Можно так:
    #include <iostream>
    
    void func(std::initializer_list<int> data)
    {
    	for(const auto& item : data) {
    		std::cout << item << std::endl;
    	}
    }
    
    int main() {
    	func({1, 2, 3});
    	std::cout << std::endl;
    	func({1, 2, 3, 10, -1, 15});
    	return 0;
    }
    Ответ написан
    2 комментария
  • Объясните про валютный контроль и ИП?

    kawabanga
    @kawabanga
    2. Открыть валютный счет в банке. Вот тут не все так просто. Я живу в небольшом городе, банков здесь немного, всяких Точек, Модульбанков и Альфа-банков здесь нет. Как быть? Можно ли пользоваться Сбером? (Есть Россельхозбанк, Совкомбанк, ВТБ24, Сбер).

    Узнайте о банках, которых у вас нет. Точно скажу что Модуль Банк раньше ездили в города, в которых они отсутствуют. Да и от банка вам много не надо.

    3. Зарегистрироваться в Эльбе для бухгалтерии.

    Зачем? Зачем тратить 9-15К за то что вы сами можете за час раз в год сделать?

    4. Перевести текущий контракт на русский. Можно самому? Заверять насколько я понял не нужно.

    Если вы ИП на упрощенке, и если сумма ваших обязательств менее 50К долларов, то паспорт сделки не нужен. Пусть спецы поправят, но в Модуле мне именно так сказать.

    Вроде все?
    1. Раз в месяц я должен отправить инвойс или акт работодателю с номером счета, со списком выполненных работ (Это обязательно? у меня бессрочный контракт, таски могут быть разные).

    Нет, если это не требует работодатель.

    2. Деньги падают в $ на транзитный счет, там банк проверяет сделку, инвойс (акт) и контракт я так понимаю?

    Банк все делает сам, цена вопроса для Модуля - 300 руб транзакция до 200К кажется.


    4. С рублевого счета я могу отправлять/делать с суммой что угодно?

    если вы ип на упрощенке 6%, то вы можете делать с этими деньгами что угодно. Не забывая платить в пенсионный годовые взносы, налог 6% (а еще узнайте у себя в городе про налоговые каникулы для ИП), и 1% на все что выше 300К.
    Ответ написан
    5 комментариев
  • Почему данная шаблонная функция не хочет перезагружаться?

    @MiiNiPaa
    Я не буду расписывать все проблемы данного кода, остановлюсь на главном:

    Function1 объявлена как принимающая 2 аргумента одного типа. Во втором и третьем случае вы вызываете её подсунув аргументы разных типов. Соответственно компилятор не может решить, чем будет T в данной ситуации - double или int, char или int? Либо делайте 2 шаблонных типа, либо делайте 2й аргумент нешаблонный, либо передавайте аргументы одного типа, либо явно говорите функции при вызове, чем является T.

    Вторая проблема, не дающая собрать код, это противоречащие объявления этой функции - в одном случае аргумент по умолчанию есть, во втором - нет.
    Ответ написан
    8 комментариев
  • Что есть в C++, чего нет в C#?

    15432
    @15432
    Системный программист ^_^
    На C/C++ можно написать системный драйвер или микропрограмму для железки.
    В C/C++ есть union
    В коде на C/C++ можно использовать ассемблерные вставки

    Как уже писали, из-за близости языка к ассемблеру и машинному коду, упрощается работа с структурами данных и указателями, отсутствуют проверки и прослойки, само исполнение кода производится быстрее. Не требуется наличие .NET Framework, можно создать программу, не требующую вообще никаких дополнительных библиотек и ПО.
    Ответ написан
  • Выдает ошибку на этапе выполнения. Почему?

    15432
    @15432
    Системный программист ^_^
    Потому что у вас в массиве зарезервировано всего 44 места (0...43), а вы используете 45 (0...44)
    Ответ написан
    Комментировать
  • Что подойдет для организации личных задач/проектов/контактов/файлов?

    @h7b6
    Возможно trello.com подойдет.
    Ответ написан
    Комментировать
  • Почему C++ лучше для игрового движка, а не Java?

    @apro
    > Но многие говорят, что для написания движка лучший выбор - С++. Почему? Java вообще для этих целей не подходит? Или как :)

    Просто статистика - 99% AAA написано на C/C++.

    Из очень популярных игр на Java был только minecraft,
    но недавно MS объявил что все перепишет на C++, вернее уже использует
    написанный вариант на C++ под все платформы.

    Но если не собираетесь заниматься разработкой ААА игр,
    то просто изучите один из движков - Unity/C# или unreal engine/C++ и вперед.

    Java к сожалению в списке нет.
    Все это конечно в контексте коммерческой разработки игр.

    Для себя или свой собственный инди проект пишите на любимом языке
    и от этого возможно и игра будет лучше.
    Ответ написан
    1 комментарий
  • Почему C++ лучше для игрового движка, а не Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Язык программирования - это инструмент решения задач.
    Java, C, Js, Python.... это все инструменты.
    И так же, как молоток подходит для заколачивания гвоздей, а отвертка - для закручивания шурупов, Java подходит для написания приложений с мощной логикой, а Js, например, для веселых страничек в интернете.
    Можно и молотком шурупы "закручивать" и отверткой гвозди забивать, но гораздо эффективней использовать инструменты по прямому назначению.
    Холивары тут бессмысленны и бесполезны - не стоит сравнивать Java и C++. Никто же не спорит о молотках против отверток (всем же понятно, что молотком - быстрее)). В каких то задачах уместнее использовать Java, в каких-то - плюсы.
    Ответ написан
    Комментировать
  • Путь в программирование, как выбрать?

    Amfore
    @Amfore
    Язык программирования это лишь половина задачи. Не важно на каком языке вы пишите. Если не знаете принцип, то толку будет мало, высока вероятность, что вы и с++ на пол пути забросите.
    Алгоритмы и структуры данных почитать бы, а синтаксис у языка можно и за месяц освоить.

    не очень удобно писать на Шарпе..

    Что C#, что C++ , они в принципе все Cи-подобные, и в чем сложность, мне не понятно.
    Ответ написан
    1 комментарий
  • Реализация свойства как объекта: паттерн или антипаттерн?

    lxsmkv
    @lxsmkv
    Test automation engineer
    попробуйте написать для ваших объектов юнит-тесты - если это будет легко и удобно - архитектура годная.
    Ответ написан
    Комментировать
  • Что использовать, int, float или double в современном игровом движке?

    maaGames
    @maaGames
    Погроммирую программы
    И то и то и то. В видеокарту double лучше не передавать (особенно в карточки nvidia), поэтому float. В физическом движке лучше double, либо вещественное число с фиксированнй точкой (читай int/int64).
    У вас ошибка в суждениях. 1мм - это много или мало? Для линейного размера нормально? А для углового? А если пять раз повернуться по часовой стрелке и три раза против часовой, при этом координата сохраняется с точностью до миллиметра? Если поворачиваем корабль, длиной в 300 метров? А если карандаш, длиной 7 сантиметров? А если это моргает персонаж? Т.е. нужно использовать те типы данных, которых достаточно для представления тех данных, с которыми работаете. Причём, они вполне могут конвертироваться друг в друга, возможно, с потерей точности.
    Ответ написан
    Комментировать