Base constructor
- C++ kursu
- Orta seviye
- Ders 16/116
- 5 dk
Türetilmiş sınıfta base yapıcıyı çağırmayı öğrenirsin.
Base constructor
Türetilmiş sınıfın yapıcı metodu, temel sınıfın yapıcısını başlatma listesinde çağırabilir. Bu, temel sınıfın üyelerine ilk değer vermenin standart yoludur. İki noktadan sonra temel sınıf adı ve parantez içinde parametreler yazılır.
Örnek: Dog(std::string n) : Animal(n) { }. Burada Animal(n), Animal sınıfının parametreli yapıcısını n ile çağırır. Önce temel sınıfın yapıcısı çalışır, sonra türetilmiş sınıfın gövdesi. Temel sınıfın üyeleri hazır olduğunda türetilmiş sınıf kendi üyelerini ekleyebilir. Bu sıra her zaman böyledir.
Çalışma sırası
Bir türetilmiş nesne oluşturulurken önce temel sınıfın yapıcısı, sonra türetilmiş sınıfın yapıcısı çalışır. Yok edilirken sıra tersinedir: önce türetilmiş sınıfın destructor'ı, sonra temel sınıfın destructor'ı çağrılır. Bu sıra C++ standardıyla sabitlenmiştir.
Örnek: Dog dog("Karabaş"); yazdığında önce Animal("Karabaş") çağrılır, sonra Dog'un gövdesi. Bu yüzden Dog'un gövdesi Animal'ın üyelerini güvenle kullanabilir. Temel sınıfın virtual destructor'ı yoksa, temel işaretçi üzerinden yok etme düzgün çalışmaz; bu yüzden temel sınıfa genellikle virtual ~Animal() { } eklenir.
Uygulama Dog yapıcısında Animal yapıcısını çağır
Animal sınıfını tanımla: public: std::string name; Animal(std::string n) : name(n) { }. Dog sınıfını Animal'dan türet ve Dog(std::string n) : Animal(n) { } yapıcısını ekle. main içinde Dog dog("Karabaş"); oluştur ve std::cout ile dog.name'i yazdır.
Başlangıç kodu
#include <iostream>
#include <string>
// Animal ve Dog sınıflarını tanımla
int main() {
// Dog örneğini oluştur ve name yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
class Animal {
public:
std::string name;
Animal(std::string n) : name(n) {
}
};
class Dog : public Animal {
public:
Dog(std::string n) : Animal(n) {
}
};
int main() {
Dog dog("Karabaş");
std::cout << dog.name;
return 0;
}Beklenen çıktı
Karabaş
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dog(std::string n) : Animal(n) { } satırında Animal(n) ne yapar?
Dog(std::string n) : Animal(n) { }- Animal sınıfını yeniden tanımlar
- Animal yapıcısını n parametresiyle çağırır Doğru cevap
- Animal üyesini oluşturur
- Animal'ı yok eder
Açıklama: Animal(n), temel sınıf yapıcısını n ile çağırır.
2 Temel yapıcı çağrısını tamamla
Dog(std::string n) : ____(n) { }
Dog(std::string n) : Animal(n) { }
Açıklama: Animal(n), temel sınıf yapıcısını çağırır.
3 Aşamayı sırasına eşle
| Kavram | Anlamı |
|---|---|
Animal(n) |
İlk çalışan yapıcı |
Dog gövdesi |
İkinci çalışan kısım |
~Dog() |
İlk çalışan yıkıcı |
~Animal() |
İkinci çalışan yıkıcı |