- static: Sınıflarda veya structlarda tüm instancelar tarafından aynı şekilde erişilen bir değişken/fonksiyon yaratmak için kullanılır. Bu yaratılmış değişken veya fonksiyon modifiye edildiğinde tüm instancelarda da modifiye edilmiştir. Sınıf veya struct dışı kullanımlarda ise linker'a "bu değişken veya fonkisyon yalnızca bu dosyaya özel, başka bir dosya ile bağlantı sağlama" demeye yarar.
- extern: Bir değişkenin veya fonksiyonun başka bir dosyada aranması gerektiğini linker'a bildirir.
- virtual: Base sınıfın herhangi bir metoduna eklenir ve derrived sınıfa aynı metot ismine sahip olan bir fonksiyon yaratılmasına izin verir. Bu sayede o fonksiyon base sınıf ile oluşturulmuş bir pointer kullanılarak çağırılırsa derrived sınıfın (overwritten) metotu çağırılır. C++11 ile beraber derrived sınıftaki metota override eklenmesi de önerilmektedir.
- interface (pure virtual functions): Base sınıfın tamamen virtual fonksiyonlardan oluşup hiçbir implementasyonu olmaması durumuna denir. Interfaceler kesinlikle bir instance yaratamazlar, yalnızca derrived edilebilirler. Bir pure virtual fonksiyon yaratmak için fonksiyonu sıfıra eşitlememiz gerekmektedir:
virtual std::String GetName() = 0
. Derrived sınıf, base sınıftaki tüm interface fonksiyonları implemente edilmeden instance edilemez. - mutable: Const tanımlanmış fonksiyonların (
const std::String& GetName() const{}
) içerisinde const olmayan bir değişkenin değeri ile oynayamayız. Bu durumu aşmak için o değişkene mutable anahtar kelimesini eklersek fonksiyon const olsa bile değiştirme gücünü bize verir. - template: Aynı fonksiyonu farklı tipteki parametrelerle çalışır şekilde hazırlamak için overload yapmak yerine parametre tipi olarak "generic" bir tip vermemizi sağlayan yapıdır.
Notlar
- Sınıflarda yaratılan ve visibility anahtar kelimesi (private, protected, public) olmayan tüm fonksiyonlar ve değişkenler private olarak tanımlıdır.
- Structlarda yaratılan tüm fonksiyonlar ve değişkenler public olarak tanımlıdır.
- C++11 ile beraber
char16_t
, char32_t
ve wchar_t
tipleri tanıtılmıştır. charX'ler UTF-X'e göre olduğunu belirtir. Char array tanımı yapılırken char16_t a = u"Deneme"
;, char32_t b = U"Deneme";
şeklinde tanımlanmalıdır.