• Какою директив лучше использовать для класса (#pragma once) или (#ifndef)?

    @robotzet
    Stackoverflow
    tl;dr:
    Что больше нравится - то и используйте.
    Ответ написан
    Комментировать
  • Как можно ли сделать ввод несколькох даных в одной строчке?

    Можно сделать так:
    int num; // количество вводимых элементов
    vector<Type> storage; // хранилище элементов
    
    while (num != 0) {
        Type tmp = 0;
        
        cin >> tmp;
        storage.push_back(tmp);
        --num;
    }

    При условии что вы используете либо стандартный тип, либо тип для которого перегружен оператор извлечения данных из потока.
    Ответ написан
    2 комментария
  • Стоит ли разрабатывать приложения на c# через Xamarin на платформу Андроид?

    @lyeskin
    Как раз сегодня эту тему изучал.

    Вкратце - если нужно быстрое и простое решение для кроссплатформы, то ксамарин подойдет.
    Если нужно использовать фишки платформы, максимальную оптимизацию, максимальное качество, в общем, то прямой путь в native.

    И да, для эффективного использования xamarin нужно знать особенности каждой платформы, под которую собираетесь разрабатывать.
    Ответ написан
    2 комментария
  • Можно ли поменять тип у Си++ с помощю (int)num?

    TrueBers
    @TrueBers
    Гуглю за еду
    Забудьте Си, если пишете на плюсах! Не нужно бульдога с носорогом смешивать. Это абсолютно разные языки, пусть даже выглядят очень похоже.

    Работать то оно будет, но совсем не безопасно.

    Почитайте про 4 вида кастов: static_cast, const_cast, dynamic_cast и reinterpre... и используйте только их (для начала, желательно, только первый из них).

    Слишком длинные и труднозапоминаемые операторы? А это сделано специально, чтобы мотивировать разработчика не использовать явные касты вообще. Си++ изначально задумывает гибкую работу с типами, предпочитая неявные преобразования и сводя к минимуму явные. Лучше лишний раз перегрузить функцию с нужным типом, и сделать проверки в реализации этой функции, чем давать пользователю возможность что-то сломать неверным кастом.
    Ответ написан
    Комментировать
  • Можно ли поменять тип у Си++ с помощю (int)num?

    AxisPod
    @AxisPod
    А чем не устраивает приведение типов в стиле C++, чем раньше привыкните, тем лучше.
    int val = static_cast<int>(54.3f);
    std::size_t addr = reinterpret_cast<std::size_t>(&val);

    В данном случае больший контроль над тем, что и куда приводите.
    Ответ написан
    Комментировать
  • Какая разница между String& operator+ (); и String operator+ ();?

    @Mercury13
    Программист на «си с крестами» и не только
    Первое возвращает по ссылке, второе по значению. Первое просто возвращает адрес, второе делает копию. Как определить, что нам нужно?
    Где у нас результат: в локальной переменной или нет?

    Перед нами операция «унарный плюс», которая, скорее всего, ничего не делает и return *this. Этот самый *this точно не локальный. Потому возвращаем по ссылке, String&.

    А теперь возьмём бинарное сложение. Мы создаём новую строку (как локальную переменную, разумеется), заносим в неё сумму… а чтобы она не исчезла раньше, чем её подберёт вызывавшая подпрограмма, вернём по значению (String).

    Для виртуальных функций обычно перестраховываются и возвращают по значению (String). Чхают на копирование, зато если вдруг потомку потребуется вернуть что-то локальное, он без проблем вернёт.
    class Father {
    private:
      String fName;
    public:
      virtual String& name() const { return fName; }  // пока всё нормально, но…
    };
    
    class Son : public Father {
    public:
      String& name() const
         { return Father::name() + "'s son"; }   // ошибка, возвращаем локальную переменную!
    };
    Ответ написан
    Комментировать
  • Что лучше после изучения Си? Писать игры на си(подкажите под какие библиотеки и шаблоны) или выучить java/c++/c#?

    AxisPod
    @AxisPod
    Имхо C > C++ > C#/Java, но тут зависит от целей, если хочется именно C++, учить придётся долго. уж очень много подводных камней, если нужен C# или Java, то C++ нужен как промежуточный, переход будет более плавный. С другой стороны можно и сразу C# или Java брать, не сложно.

    Большая разница в том, что C#/Java full-stack языки и изучение самого языка вам ничего вообще не даст. Тут нужно изучить как работает VM, нужно изучать стандартные библиотеки, а их довольно много, все конечно не следует, но знать о их наличии надо.

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

    Выбор остаётся так или иначе за вами.

    Если выбор игр, то не советую делать это на C или C++, вы потеряете слишком много времени на разработку, разочаруетесь и бросите это занятие. Тут лучше брать к примеру тот же Unity 3D и вперед.
    Ответ написан
    Комментировать