Bu yazı dizisinde C++ dili açısından önem taşıyan bazı terimleri ele alacağım. Bu terimlerden ilki “aggregate”. Bu terimi türkçeye, daha iyi bir karşılık buluncaya kadar “bileşik tür”
Yazar: Necati Ergin
C çalışma soruları – 41 (yazının başına yazı ekleme)
Birinci parametresine adresi gönderilen yazının başına ikinci parametresine adresi gönderilen yazıyı ekleyen strprep isimli işlevi tanımlayınız.
1 |
char *strprep(char *p1, const char *p2); |
İşlevin birinci parametresi başına ekleme yapılacak yazının adresi
bir sınıfın belirli bir üye işlevine arkadaşlık vermek
A isimli bir sınıfımız var ve bu sınıfın, B isimli bir başka sınıfın geri dönüş değeri olmayan, parametresi A sınıfı türünden olan foo isimli üye işlevine arkadaşlık vermesi
bir işlev çağrısını yalnızca belirli bir türden argümanla sınırlamak
Bir işlevimiz var ve bu işlevin yalnızca belirli bir türden argümanla çağrılabilmesini güvence altına almak istiyoruz:
1 |
void func(int); |
Amacımız yukarıdaki gibi bildirilen bir işlevin yalnızca
sınıfların özel işlevlerinin derleyici tarafından yazılması – 1
C++ dilinin en karmaşık ve en fazla öğrenme zorluğu içeren araçlarından biri sınıfların özel işlevleri (special members). C++11 standartlarına göre sınıfların 6 özel işlevi var.
sınıfın tamamlanmamış türlerden (incomplete type) static veri öğeleri
Bir sınıfın static bir veri öğesi tamamlanmamış bir türden (incomplete type) olabilir. Aşağıdaki örneğe bakalım:
1 2 3 4 5 6 7 8 |
//myclass.h class A; class Myclass { public: static A ms_a; static class B ms_b; }; |
myclass.h isimli başlık dosyasında Myclass isimli bir sınıf
gösterici gösteren gösterici (pointer to pointer)
Gösterici değişkenler (pointer variables) değerleri adres olan yani adres bilgisi tutan değişkenlerdir.
1 |
int *ptr; |
gibi bir tanımlamayla ismi ptr olan bir değişken oluşturulmuş olur. Programın
operator bool işlevi
Bazı durumlarda sınıf nesnelerimizin lojik ifade beklenen yerlerde lojik yorumlamaya tabi tutulmasını isteriz. Örneğin nesneleri sayaç olarak kullanılacak Counter isimli bir sınıfımız olsun:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Counter { public: Counter(int val = 0); Counter &operator++(); Counter operator++(int); Counter &operator--(); Counter operator--(int); // }; int main() { Counter c; ++c; // if (c) { // } // } |
lambdalarda genelleştirilmiş yakalama (generalized lambda captures)
C++14 ile lambda ifadelerinin olanakları genişletildi. Artık lambda yakalama listesinde isimlendirilmiş değişkenler oluşturabiliyor bu değişkenlere istediğimiz ifadeler ile ilk değer verebiliyoruz. Derleyici bu durumda
türden bağımsız lambdalar (generic lambda)
Geçen yazımızda lambda ifadelerini ele almıştık. Bu yazımızda ise C++14 standartlarıyla gelen araçlardan biri olan türden bağımsız lambda ifadelerini inceleyeceğiz. C++14 standartlarıyla birlikte artık