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