Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (27)

Наибольший вклад в теги

Все теги (82)

Лучшие ответы пользователя

Все ответы (229)
  • В чем разница между int a() и int a=int()?

    @MiiNiPaa
    А теперь выведите typeid(first).name() на экран и удивитесь.

    Первая строчка это объявление функции first без параметров и возвращающая int. Имя функции превращается в указатель, указатель конвертируется в bool (true), который конвертируется в int (1).
    Ответ написан
    3 комментария
  • Можно ли возвращать лямбды?

    @MiiNiPaa
    Вот так делать - это нормально?
    Вполне

    И что в таком случае возвращается, указатель на функцию или сама функция?
    Функциональный объект. Лямбда — не функция, она может быть приведена к указателю на функцию в некоторых случаях.

    Если возвращается указатель, то где хранится сама функция, в куче или стеке?
    «Функция» лямбды хранится там же, где и остальной код. На лету ничего не собирается и не компилируется. Лямбда это синтаксический сахар для объявления класса с перегруженым оператором вызова функции.

    И еще один вопрос, по этой же теме:
    Это сокращенная запись вот такой конструкции:
    Или что то другое?
    lambda имеет уникальный тип. Это не функция (но может быть приведена к ней в данном случае).
    Ответ написан
    Комментировать
  • Управление памятью в С++?

    @MiiNiPaa
    Быстро перескочить не получится. Сначала придётся разобраться с моделью памяти в С++, разницу между автоматической, статической и динамической памятью...

    Конкретно по коду: удалять ничего не надо, переменная a будет уничтожена автоматически, как только выйдет из области видимости.
    Ответ написан
    Комментировать
  • Как работает метод nextLine() в классе Scanner?

    @MiiNiPaa
    nextLine() читает до конца текущей строки (символа перевода строки или конца потока) и возвращает всё, что было в этой строке.

    nextDouble() читает double. Оно не читает и не пропускает ничего ПОСЛЕ double.

    Итак вы вводите что-то вроде "3.15\n", где \n — символ перевода строки.
    nextDouble() извлекает 3.14 и оставляет "\n" в буфере.
    nextLine() натыкается на \n и прекращает работу, прочитав 0 символов — пустую строку.

    Проверьте: введите в одной строке "1 2 Иванов", и оно заработает (Правда пробел перед Иванов прочтётся как часть фамилии)

    Модно вызвать nextLine(), чтобы поглотить этот перенос строки и ожидать новой строки.
    Ответ написан
    3 комментария