Zamonaviy C++

RAII, qiymat semantikasi va standart kutubxona - 20 bosqichli amaliy qo'llanma

📚 20 bo‘lim 🎯 O‘rta 👁 66 ko‘rish

Darslik haqida

C++ - o'yin dvigatellari, ma'lumotlar bazalari, brauzerlar va moliyaviy tizimlar yozilgan til. Uning obro'si murakkablik bilan bog'liq, lekin zamonaviy C++ (C++17/20/23) eski C++ dan sezilarli farq qiladi: qo'lda xotira boshqarish o'rniga RAII, xom ko'rsatkichlar o'rniga egalik ifodalovchi turlar, xato kodlari o'rniga std::expected. Ushbu darslik aynan shu zamonaviy uslubni o'rgatadi: qiymat semantikasi, havolalar, konteynerlar va algoritmlar, RAII va egalik, nusxa va ko'chirish, shablonlar va konseptlar, xatolarni boshqarish, ko'p oqimlilik hamda aniqlanmagan xulq-atvor. Barcha misollar g++ 15 va C++23 da haqiqatda kompilyatsiya qilinib ishga tushirilgan. Kod ichidagi o'zgaruvchi va funksiya nomlari o'zbek tilida.

Darslik mundarijasi

  1. 1 C++ bilan tanishuv C++ ni kim va nima uchun yaratgan, u qaysi masalalarni yechadi, C dan nimasi bilan farq qiladi va nima uchun "zamonaviy... 9 daq.
  2. 2 Muhitni sozlash va kompilyatsiya Kompilyator o'rnatish, to'rt bosqichli kompilyatsiya, muhim bayroqlar va sanitayzerlar. 20 daq.
  3. 3 Turlar va o'zgaruvchilar Qavsli initsializatsiya, auto, constexpr va enum class - kichik tanlovlar katta farq qiladi. 17 daq.
  4. 4 Havolalar va const Havola - obyektning ikkinchi nomi; nusxa qachon qimmat va const nima uchun deyarli hamma joyda kerak. 15 daq.
  5. 5 Funksiyalar va lambdalar Qayta yuklash, standart argumentlar va lambda ifodalari - ular qanday ishlaydi va nimani ushlab qoladi. 16 daq.
  6. 6 Satrlar std::string, std::string_view va nima uchun ikkalasi ham kerak. 11 daq.
  7. 7 Konteynerlar vector, array, map va boshqalar - qaysi birini qachon tanlash va nima uchun vector deyarli har doim to'g'ri. 16 daq.
  8. 8 Iteratorlar, algoritmlar va ranges Qo'lda yozilgan halqalar o'rniga nomlangan algoritmlar - va C++20 ranges ular bilan ishlashni qanday soddalashtirgani. 15 daq.
  9. 9 RAII - resurs bilan bog'langan umr C++ ning markaziy g'oyasi - resursni obyekt umriga bog'lash; nima uchun u istisnolar bilan ham ishlaydi. 14 daq.
  10. 10 Aqlli ko'rsatkichlar va egalik Kim resursni o'chiradi degan savolga kodda javob berish - unique_ptr, shared_ptr va weak_ptr. 16 daq.
  11. 11 Sinflar va konstruktorlar Invariantni himoya qiluvchi tur qurish - konstruktor, destruktor, a'zolarni ishga tushirish ro'yxati va kirish darajalar... 14 daq.
  12. 12 Nusxalash va ko'chirish Nol qoidasi, uch qoidasi va besh qoidasi - obyekt nusxalanganda va ko'chirilganda nima sodir bo'ladi. 15 daq.
  13. 13 Operatorlar va qiymat semantikasi O'z turingizni o'rnatilgan turdek ishlatish - solishtirish, arifmetika, indekslash va uch tomonlama operator. 13 daq.
  14. 14 Vorislik va polimorfizm Virtual funksiyalar, abstrakt interfeyslar, kesilish muammosi va vorislik qachon kerak emasligi. 13 daq.
  15. 15 Shablonlar va konseptlar Bir marta yozib har qanday tur bilan ishlatish - shablon funksiyalar, shablon sinflar va C++20 konseptlari. 16 daq.
  16. 16 Xatolarni boshqarish Istisnolar, std::optional va C++23 std::expected - qaysi biri qachon to'g'ri tanlov. 13 daq.
  17. 17 Standart kutubxona Vaqt, sana, fayl tizimi, tasodifiy sonlar va formatlash - tashqi kutubxonasiz. 14 daq.
  18. 18 Ko'p oqimlilik jthread, mutex, atomic va future - ma'lumotlar poygasidan qanday qochish kerak. 16 daq.
  19. 19 Aniqlanmagan xatti-harakat UB nima, u nima uchun xavfli va sanitayzerlar uni qanday topadi. 11 daq.
  20. 20 Yakuniy loyiha Yigirma bo'lim bilimini bitta ishlaydigan dasturda birlashtirish - jurnal tahlilchisi. 11 daq.