28 Şubat 2019 Perşembe

C++ : inheriting constructor - lambda - bind function - variant -clamp


C++ örnekler;
  • inheriting constructor
  • lambda expressions
  • std::bind
  • std::variant (C++17)
  • std::clamp (C++17)

inheriting constructor
Bu örnekte yapıcı metodu kalıtım ile aktarmayı göreceksiniz. 
using A::A; komutu ile temel sınıf olan A'nın parametre almayan ve tek parametre alan yapıcı metodlarını kalıtım ile B'ye aktarmış olduk.


lambda expressions
C++11 itibariyle eklenmiş lambda ifadelerinde genel syntax şu şekilde;
Tek bir parametre alan ve aldığı değerin karesini dönen bir lambda fonksiyon örneği (geri dönüş tipi opsiyonel);
Capture list seçenekleri ile lambda kapsamı içerisindeki değerlerin geri alınabilmesi sağlanabilir. (bknz: call by reference)

std::bind function
std::bind bir template fonksiyondur ve bir fonksiyonun parametrelerine binding işlemi yapmaya olanak sağlar. Aşağıdaki örnekte iki parametre alan print fonksiyonunun ilk parametre değerine 25 değeri verilerek yeni bir f fonksiyonu tanımlanmıştır. Artık bu f fonksiyonu sadece bir parametre ile çağrılabilir. 
(Not: std:bind için header -> #include <functional> )
25 değerini 2. parametreye bağlamak için;

Hakeza fonksiyon parametrelerinin yerlerinin değiştirilmiş halini bir başka fonksiyona bind edebiliriz.


std::variant
variant C++17 itibariyle eklenmiş , daha önceden kullanılan union 'un type-safe halidir. variant ile union'un aksine hangi tipte değer saklandığı bilinebilir, yanlış elemana erişilmek istenirse hata alınır. İstenen değere index veya değişken tipi ile erişilebilir.

variant tipindeki değişken tek bir değer içerebileceği için, index numarasına göre kontrol ederek ilgili elemana ulaşabiliriz. Aşağıdaki örnekte 'int 25' değerine erişmek istersek hata alırız, çünkü variant ile union gibi sadece bir değer saklanır.


std::clamp
clamp c++17 itibariyle eklenmiş bir fonksiyondur ve verilen bir değeri belirtilen min. ve max. değerler arasında tutmaya yarar.


Her türlü görüş, öneri ve sorularınızı İletişim sayfası aracılığıyla iletebilirsiniz...


Hiç yorum yok:

Yorum Gönder