C++11. Нововведения

  Юрий  | 

    | 

  Обновл. 14 Фев 2019  | 

 1981

12 августа 2011 года ISO (Международная организация по стандартизации) утвердила новую версию C++ под названием C++11. Было добавлено много нового функционала, использовать который не обязательно, но который очень даже полезен в конкретных случаях.

Зачем нужен C++11?

Бьёрн Страуструп охарактеризовал цели C++11 следующим образом:

   Укреплять сильные стороны C++, нежели пытаться захватить те области, в которых С++ слаб (например, приложения Windows с тяжёлым графическим интерфейсом). Сосредоточиться на том, чтобы заставить С++ делать ещё лучше то, что у него и так хорошо получается.

   Сделать C++ легче в изучении, использовании и обучении – предоставить функционал, который сделает язык более простым в использовании.

Руководствуясь этими целями, комитет, который согласовывал версию С++11, старался выполнить следующее:

   Поддерживать стабильность и совместимость со старыми версиями C++ и C, где это возможно. Программы, которые работали под C++03 должны работать и под C++11.

   Свести к минимуму количество основных расширений С++. Внести большую часть изменений в стандартную библиотеку С++ (эта цель не была достигнута в полной мере).

   Сосредоточиться на улучшении механизмов абстракции (классы, шаблоны), нежели на добавлении механизмов обработки конкретных случаев (которые случаются нечасто).

   Повысить безопасность типов данных.

   Повысить производительность и позволить C++ напрямую работать с оборудованием.

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

C++11 не слишком далеко ушёл от C++ 03, но он действительно привнёс много нового функционала.

Что нового в С++11?


Вот список основного функционала, который добавили в C++11 (это не полный список всего, что добавили, а основная его часть, представляющая интерес):

   auto;

   char16_t, char_32t и новые литералы для их поддержки;

   constexpr;

   decltype;

   спецификатор default;

   делегирующие конструкторы;

   спецификатор delete;

   классы enum;

   внешние шаблоны;

   лямбда-выражения;

   long long int;

   конструктор перемещения и оператор присваивания перемещением;

   спецификатор noexcept;

   nullptr;

   модификаторы override и final;

   цикл foreach;

   ссылки r-value;

   static_assert;

   std::initializer_list;

   псевдонимы типов;

   uniform-инициализация;

   пользовательские литералы;

   вариационные шаблоны.

Примечание: К каждой теме, которую мы рассматривали – указан соответствующий урок, если ссылка на урок не указана, значит мы не рассматривали эту тему. Впрочем, вы всегда сможете найти дополнительную информацию, просто загуглив.

В C++11 также было добавлено много новых классов, доступных к использованию и улучшены старые:

   лучшая поддержка многопоточности и локальное хранилище потоков;

   хеш-таблицы;

   улучшенная генерация случайных чисел;

   std::reference_wrapper;

   регулярные выражения;

   std::tuple;

   std::unique_ptr.

В следующем уроке мы рассмотрим нововведения версии С++14.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (12 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *