C dilinin sözdizimine ne kadar hakimsiniz? Aşağıdaki kurallardan kaç tanesini biliyorsunuz? (Dürüst olun…) 1. Bir bildirimde const ya da volatile belirteçlerini birden fazla kez
şablon sabit parametreleri – 1 (template non-type parameters)
Şablon sabit parametrelerine (template non-type parameters) ilişkin ilginç bir özellik var: Bir şablon sabit parametresi, bir şablon tür parametresi (type parameter) türünden olabiliyor. Biraz karmaşık
using ile eş isim şablonları (alias template) bildirimleri
C++11 öncesinde bir türe eş isim (type alias) oluşturmanın tek yolu C’den gelen typedef bildirimleriydi:
1 2 3 4 5 6 7 8 |
#include <vector> #include <string> typedef int Word; typedef int *Iptr; typedef int SMatrix10[10][10]; typedef int(*Fptr)(int, int); typedef const std::vector<std::string> Csvec; |
C++11 standartları ile türlere eş isim oluşturmak için ikinci bir
adreslerin karşılaştırılması ve C++
Dinamik tür kavramına sahip C++ dilinde bir nesne birden fazla geçerli adrese sahip olabilir. Adreslerin karşılaştırılması adreslerden ziyade nesnelerin kimliği (identity) ile ilgili. Aşağıdaki
sınıfın yalnızca belirli öğelerine arkadaşlık vermek (attorney client idiyomu)
Nesne yönelimli programlamanın temel ilkelerinden birisi, belki de en önemlisi “encapsulation” (kapsülleme). Bu ilke verilerin (data) ve bu veriler üzerinde işlem yapacak işlevlerin (methods) birlikte tutulması
inline isim alanları (inline namespaces)
inline isim alanları (inline namespaces) C++11 standartları ile dile eklenmiş bir özellik. Bir isim alanı inline anahtar sözcüğü ile bildirildiğinde bu isim alanı içindeki
C++ 17 içsel isim alanları (nested namespaces)
C++17 standartları ile gelen yeni özelliklerin hemen hepsi yaygın kullanımda olan derleyiciler tarafından gerçekleştirilmiş (implemente edilmiş) durumda. Bu yeni özelliklerden biri de içsel isim
saf sanal işlevlerin tanımlanması – 3
Taban sınıf, kendisinden kalıtım yoluyla elde edilecek türemiş sınıflara bir operasyon için bir arayüz ve bu arayüze ilişkin türemiş sınıfların kullanacağı kodun bir kısmını
saf sanal işlevlerin tanımlanması – 2
Bir taban sınıfın (saf olmayan) sanal işlevleri kalıtımla elde edilecek sınıflara hem bir arayüz hem de varsayılan bir kod sağlar. Kalıtımla elde edilecek sınıf,
saf sanal işlevlerin tanımlanması – 1
C++ dilinde taban sınıfların saf sanal işlevleri (pure virtual functions) kalıtım yoluyla elde edilecek sınıflara bir arayüz (interface) sunan ancak bir kod sağlamayan operasyonları