С++11. Нововведення

  Юрій  | 

  Оновл. 21 Тра 2021  | 

 55

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 Зірок (2 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

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