C++ şablonları ve genel programlama
İşlev ve sınıf şablonları, tür özellikleri, kavramlar ve değişken parametrelerle tür güvenli, yeniden kullanılabilir kütüphaneler tasarlarsın.
Seviye 401 · 17 ders · 15 pratik lab
Dersler
Şablon temelleri
- İşlev şablonları ve tür çıkarımı
- Sınıf şablonları ve CTAD
- Tam ve kısmi özelleştirme
- Tür olmayan şablon parametreleri
- Kısa görev: genel sınırlı tampon şablonu
Meta programlama
- Tür özellikleri: type_traits
- SFINAE ve enable_if: eski yol
- Kendi kavramlarını yazmak ve requires ifadeleri
- Değişken sayıda parametre ve katlama ifadeleri
- if constexpr ile derleme zamanı dalları
- Kısa görev: tür güvenli biçimlendirme işlevi
Genel tasarım
- CRTP ile statik çok biçimlilik
- Tür silme: std::function benzeri bir sarmalayıcı
- Politika tabanlı tasarım
- Şablon hatalarını okumak ve derleme süresini kısaltmak
- Kısa görev: birim karışıklığını önleyen güçlü türler
Bitirme
- Bitirme görevi: kavramlarla kısıtlanmış küçük bir genel kütüphane
Pratik lablar
- Genel sınırlama işlevi yazmak: Bir değeri alt ve üst sınır arasına çeken işlev şablonunu yaz ve karışık türlerle çağrıda çıkarım hatasını gider.
- Aralık sınıfına çıkarım kılavuzu eklemek: Alt ve üst uç tutan aralık sınıf şablonunu yaz; tür belirtmeden kurulabilmesi için çıkarım kılavuzu ekle.
- Boyutu şablon parametresi olan halka tampon: Kapasitesi tür dışı şablon parametresiyle verilen halka tamponu yığın ayırmadan yaz; dolu ve boş durumları ve taşınabilir türleri testlerle kapsa.
- Kap olup olmadığını saptayan özellik yazmak: begin ve end işlevi olan türleri saptayan bir tür özelliği yaz ve static_assert ile on tür üzerinde doğrula.
- Seri hale getirmeyi türe göre özelleştirmek: Genel seri hale getirme şablonunu bool ve dizgi için tam, işaretçiler için kısmi özelleştir; her türün beklenen metni verdiğini test et.
- enable_if yığınını if constexpr ile sadeleştirmek: Dört SFINAE aşırı yüklemesiyle yazılmış dönüştürme işlevini tek gövdede if constexpr ile yeniden yaz; davranış ve derleme hatası testleri aynı kalmalı.
- Yazdırılabilir türler için concept tanımlamak: Akışa yazılabilen türleri tanımlayan concept'i yaz ve yazdırma işlevini onunla kısıtla.
- Depolama arka ucunu requires ile tanımlamak: Oku, yaz ve sil işlevlerinin imzalarını denetleyen bir requires ifadesi yaz; eksik işlevli türün anlaşılır hatayla reddedildiğini göster.
- Concept'lerle aşırı yükleme sıralamasını düzeltmek: Rastgele erişimli ve ileri yineleyiciler için iki sürümü olan uzaklık işlevinde belirsiz çağrı hatasını concept kapsamasıyla gider ve doğru sürümün seçildiğini testle kanıtla.
- Katlama ifadesiyle toplam almak: Değişken sayıda argümanı katlama ifadesiyle toplayan ve hepsinin pozitif olduğunu denetleyen iki işlev yaz.
- Değişken argümanlı kayıt satırı kurmak: Argümanları araya ayırıcı koyarak akışa yazan değişken şablonlu kayıt işlevini yaz; sıfır argüman durumunu da ele al.
- Tür güvenli biçimlendirme işlevi yazmak: Yer tutucu sayısını argüman sayısıyla derleme zamanında karşılaştıran biçimlendirme işlevini yaz; uyumsuz çağrı derlenmemeli, geçerli çağrılar doğru metni vermeli.
- Birimleri güçlü türlerle ayırmak: Metre ve saniyeyi ayrı güçlü türlerle tanımla; ikisini toplayan kod derlenmemeli, aynı birimler toplanabilmeli.
- CRTP ile karşılaştırma işleçleri kazandırmak: Yalnızca küçüktür işlevini yazan sınıflara diğer karşılaştırmaları CRTP taban sınıfıyla kazandır ve sanal çağrı olmadığını göster.
- Tür silmeli görev sarmalayıcısı yazmak: Yalnızca taşınabilen çağrılabilirleri de saklayabilen, std::function benzeri bir tür silmeli sarmalayıcı yaz ve küçük nesneler için yığın ayırmayı önle.
Kurs hakkında
İşlev ve sınıf şablonları, tür özellikleri, kavramlar ve değişken parametrelerle tür güvenli, yeniden kullanılabilir kütüphaneler tasarlarsın.
Ne öğreneceksin
- Şablon temelleri
- Meta programlama
- Genel tasarım
- Bitirme
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış 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 401 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.