Modern C++: C++17, C++20 ve C++23
Taşıma anlamı, constexpr, optional, variant, expected, aralıklar ve kavramlarla daha kısa, daha güvenli ve daha hızlı modern C++ yazarsın.
Seviye 301 · 19 ders · 15 pratik lab
Dersler
Değer kategorileri ve taşıma
- lvalue, rvalue ve değer kategorileri
- Taşıma anlamı ve std::move
- Mükemmel iletim: forward ve iletim başvuruları
- Kopya atlatma ve dönüş değeri iyileştirmesi
- Kısa görev: kopya ve taşıma sayılarını ölç
Modern dil özellikleri
- Lambda yakalamaları ve sarkan başvuru tuzağı
- constexpr ve consteval: derleme zamanında hesap
- optional, variant ve visit
- std::expected ile istisnasız hata yönetimi
- Yapılandırılmış bağlama ve başlatıcılı if
- std::format ve std::print
- Kısa görev: expected döndüren yapılandırma yükleyici
C++20 ve sonrası
- Aralıklar ve görünümler: filter, transform, take
- Kavramlar (concepts) ile okunur şablon hataları
- Üç yönlü karşılaştırma: <=>
- Modüllere giriş: import ile derleme
- Eşyordamlara giriş: üreteç yazmak
- Kısa görev: döngüleri aralık boru hattına çevir
Bitirme
- Bitirme görevi: eski bir C++98 kodunu modern C++’a taşı
Pratik lablar
- Kopya ve taşıma sayısını saymak: Sayaçlı bir tür kullanarak vektöre ekleme yollarının kaç kopya ve taşıma yaptığını ölç ve emplace_back ile sıfır kopyaya indir.
- Taşıma kurucusunu noexcept yapmak: Vektör büyürken taşımak yerine kopyalanan sınıfta nedeni bul, taşıma işlevlerini noexcept yap ve kopya sayacı testini geç.
- Kusursuz iletme yapan fabrika yazmak: Argümanları gereksiz kopyalayan fabrika şablonunu std::forward ile düzelt; değer kategorisinin korunduğunu ve geri dönüşte kopyanın atlandığını testle göster.
- Derleme zamanında tablo üretmek: Sağlama toplamı tablosunu constexpr işlevle derleme zamanında üret ve static_assert ile birkaç değeri doğrula.
- Lambda'ya unique_ptr taşımak: Kopyalanamayan kaynağı başlatmalı yakalama ile lambda'ya taşı ve görev kuyruğunun derlenip doğru çalıştığını göster.
- Sarkan başvuru yakalayan lambda'yı onarmak: Yerel değişkeni başvuruyla yakalayıp sonradan çağrılan geri çağrıdaki tanımsız davranışı ASan ile göster ve yakalama biçimini düzelterek testleri geç.
- Bulunamayan kaydı optional ile bildirmek: Bulamayınca boş nesne döndüren arama işlevini std::optional döndürecek şekilde değiştir ve çağıranları güncelle.
- Olay türlerini variant ve visit ile işlemek: Giriş, çıkış ve hata olaylarını std::variant ile tut; visit ile işle ve yeni tür eklendiğinde derleyicinin eksik dalı yakaladığını göster.
- Ayar yükleyiciyi expected ile yeniden yazmak: İstisna fırlatan ayar yükleyicisini std::expected döndürecek şekilde yeniden yaz; hata türlerini ayır, zincirle ve her hata yolunu testle kapsa.
- Map döngüsünü yapılandırılmış bağlamayla sadeleştirmek: first ve second ile yazılmış map döngülerini yapılandırılmış bağlama ve başlatıcılı if ile sadeleştir; çıktı aynı kalmalı.
- Raporu std::format ile hizalamak: printf ile yazılan stok raporunu std::format ile sütun genişliği, hizalama ve ondalık duyarlığı koruyarak yeniden yaz.
- Sürüm numaralarını <=> ile karşılaştırmak: Elle yazılmış altı karşılaştırma işlecini tek bir üç yönlü karşılaştırmayla değiştir; ön sürüm etiketlerinin sırasını da doğru ver ve sıralama testlerini geç.
- Döngüyü ranges boru hattına çevirmek: Aktif kullanıcıların adlarını büyük harfe çevirip ilk beşini alan döngüyü filter, transform ve take görünümleriyle yaz.
- Şablonu concept ile kısıtlamak: Yanlış türle çağrılınca sayfalarca hata veren ortalama şablonuna kendi yazdığın concept'i ekle ve hata iletisinin kısaldığını göster.
- Eşyordamla satır üreteci yazmak: Dosyayı satır satır tembelce veren bir eşyordam üreteci yaz; yarıda bırakılan üretecin dosyayı kapattığını ve sızıntı olmadığını göster.
Kurs hakkında
Taşıma anlamı, constexpr, optional, variant, expected, aralıklar ve kavramlarla daha kısa, daha güvenli ve daha hızlı modern C++ yazarsın.
Ne öğreneceksin
- Değer kategorileri ve taşıma
- Modern dil özellikleri
- C++20 ve sonrası
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.