Лекция 2. Нововведения стандарта C++14

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ธ.ค. 2024

ความคิดเห็น •

  • @0imax
    @0imax 2 ปีที่แล้ว +3

    13:40 с незапамятных времён в C (под winavr) писал битовые маски через 0b и даже не задумывался, что это, оказывается, расширение языка. Но ещё бОльшим удивлением стало то, что в плюсах такая простая вещь появилась относительно недавно))

  • @DadundddaD
    @DadundddaD ปีที่แล้ว +1

    2014: мы выпустили новый стандарт: пользуйтесь, радуйтесь
    Спустя 6 лет:
    P.S. Немного обидно за авторов нововведений

  • @idiotsiuda
    @idiotsiuda 3 ปีที่แล้ว

    22:54 другие компиляторы в итоге научились?

  • @KIR_Engineer
    @KIR_Engineer 3 ปีที่แล้ว

    Отличная лекция. Можете залить, пожалуйста, презентацию на гугл или яндекс диск? Нету странички в ВК, не могу скачать.

    • @KIR_Engineer
      @KIR_Engineer 3 ปีที่แล้ว

      Теперь удалось скачать. Спасибо большое. 😃👍

    • @PVSStudioTool
      @PVSStudioTool  3 ปีที่แล้ว

      @@KIR_Engineer Обратите внимание, что тут с 85 слайда начинается вторая лекция :) vk.com/doc-163428578_519103873

    • @KIR_Engineer
      @KIR_Engineer 3 ปีที่แล้ว +2

      @@PVSStudioTool Понял. Спасибо. Иногда возникает желание освежить в памяти стандарты и лекцию. Спасибо за Ваш труд 😃👍

  • @MrDimonsky
    @MrDimonsky 2 ปีที่แล้ว

    32:30 std::get(t) не передан параметр t

    • @PVSStudioTool
      @PVSStudioTool  2 ปีที่แล้ว

      Да, пропустили этот момент на слайде. Спасибо что увидели и написали об этом)

  • @2b1aa1
    @2b1aa1 5 ปีที่แล้ว

    make_shared понятно алокация для счётчика ссылок,
    а make_unique а что алоцируется в unique?

    • @PVSStudioTool
      @PVSStudioTool  5 ปีที่แล้ว +11

      make_unique динамически аллоцирует объект типа T, идеально передавая список параметров в конструктор T, и сразу оборачивает указатель в std::unique_ptr. Польза заключается в следующих вещах:
      1) теперь можно забыть об использовании new-delete в свежем коде. make_unique не требует написания new, а умный указатель освободит ресурсы, вызвав delete (или кастомный deleter).
      2) make_unique безопасен для создания временных умных указателей в случае бросания исключений. Рассмотрим следующий код:
      foo(unique_ptr(new T()), unique_ptr(new U()));
      Порядок вычисления аргументов в С++ является неуточненным поведением (unspecified behavior). Порядок может быть таким: new T -> unique_ptr -> new U -> unique_ptr.
      А может быть и таким: new T -> new U -> unique_ptr -> unique_ptr. Во втором случае, если при аллокации U будет брошено исключение, то остается неосвобожденный ресурс T. make_uniqueрешает эту проблему:
      foo(make_unique(), make_unique());
      Если какая-либо динамическая аллокация бросит исключение, то теперь умный указатель освободит ресурс.

    • @eugenesasin2757
      @eugenesasin2757 4 ปีที่แล้ว

      Главная задача этих функций не оптимизация аллокаций памяти, а возможность сделать создание умных указателей безопаснее с точки зрения исключений.