CodeBlanks Logo Icon CodeBlanks

Base constructor

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

main.cpp
#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

main.cpp
#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?

main.cpp
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

Soru
Dog(std::string n) : ____(n) { }
Cevap
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ı

Orta seviye bölümündeki tüm dersler