Tipik olarak programcılar, kalıtımda kullanılacak taban sınıfları oluştururken hem arayüzü (interface) hem de türemiş sınıflar tarafından özelleştirilebilecek davranışları belirleyen sanal işlevleri sınıfın public bölümüne
Etiket: inheritance
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
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ı
eşdeğişken geri dönüş türü (covariant return type)
Türemiş bir sınıfın taban sınıfının bir sanal işlevini ezecek (override) bir işlevinin, taban sınıf işleviyle hem aynı imzaya hem de aynı geri dönüş türüne
ya public sanal olsun ya da protected sanal olmasın
Başlık başlangıçta size biraz anlamsız gelmiş olabilir. Bu cümle kalıtımda taban sınıf olarak kullanılacak sınıfların sonlandırıcı işlevlerine (destructors) ilişkin Herb Sutter tarafından formüle edilmiş
taban sınıf olarak tasarlanmamış sınıflardan türetme yapmaktan kaçının
Kalıtımda taban sınıf olacak şekilde tasarlanmamış bir sınıftan kalıtım yoluyla yeni bir sınıf oluşturmak hemen her zaman bir tasarım hatasıdır. Somut sınıflardan kalıtım yapmaktan
protected kalıtımı (protected inheritance)
Bir önceki yazımızda private kalıtımı ele almıştık. protected kalıtımda ise kurallar şöyle: Taban sınıfın (parent class) private bölümü türetilmiş sınıfa (child class) tamamen kapalı.
private kalıtımı (private inheritance)
Java, C# gibi dillerden biraz farklı olarak C++ dilinde 3 ayrı kalıtım (inheritance) biçimi var: public, private ve protected kalıtımları. Aslında bunlardan yalnızca public kalıtımı, Nesne Yönelimli