CodeBlanks Logo Icon CodeBlanks

Özet - Yapıcı metot

Overloading ve initializer list'i birleştirerek bir Product sınıfı yazarsın.

Özet - Yapıcı metot

Bu bölümde yapıcı ve yıkıcı metotları öğrendin. Yapıcı metot sınıfla aynı isimdedir, dönüş türü yoktur ve nesne oluşturulurken otomatik çağrılır. Parametreli yapıcı dışarıdan değer alır; member initializer list iki noktadan sonra üyeleri doğrudan başlatır.

Aynı sınıfta birden fazla yapıcı tanımlayabilirsin (overloading); derleyici parametrelere göre seçer. Destructor tilde ile başlar, nesne kapsam dışına çıkınca otomatik çağrılır ve kaynakları temizler. Şimdi bunları bir araya getiren bir görev yapacağız.

Uygulama Counter sınıfına yapıcı ve destructor ekle

Counter sınıfını tanımla. public: altına int count; üye değişkeni, Counter() { count = 0; std::cout << "Kuruldu"; } yapıcı metot ve ~Counter() { std::cout << "Yokedildi"; } destructor'ını ekle. main içinde Counter c; örneği oluştur.

Başlangıç kodu

main.cpp
#include <iostream>

// Counter sınıfını tanımla

int main() {
    // Counter örneği oluştur
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Counter {
public:
    int count;
    Counter() {
        count = 0;
        std::cout << "Kuruldu";
    }
    ~Counter() {
        std::cout << "Yokedildi";
    }
};

int main() {
    Counter c;
    return 0;
}

Beklenen çıktı

KurulduYokedildi

Uygulama Counter'a parametreli yapıcı ekle

Yukarıdaki Counter sınıfına Counter(int start) : count(start) { std::cout << "Kuruldu"; } parametreli yapıcıyı başlatma listesiyle ekle (varsayılan yapıcıyı da koru). main içinde Counter c(10); örneği oluştur ve std::cout << c.count; ile değerini yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

class Counter {
public:
    int count;
    Counter() {
        count = 0;
        std::cout << "Kuruldu";
    }
    ~Counter() {
        std::cout << "Yokedildi";
    }
    // Parametreli yapıcıyı başlatma listesiyle ekle
};

int main() {
    // Counter örneğini parametreli yapıcıyla oluştur ve count yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

class Counter {
public:
    int count;
    Counter() {
        count = 0;
        std::cout << "Kuruldu";
    }
    Counter(int start) : count(start) {
        std::cout << "Kuruldu";
    }
    ~Counter() {
        std::cout << "Yokedildi";
    }
};

int main() {
    Counter c(10);
    std::cout << c.count;
    return 0;
}

Beklenen çıktı

Kuruldu10Yokedildi

Sırada ne var?

Yapıcı metotlar, başlatma listeleri ve destructor'larla nesnelerin yaşam döngüsünü öğrendin. Nesneler tek başına güçlüdür ama C++'ın asıl gücü miras alma (inheritance) ile ortaya çıkar.

Sonraki bölümde mevcut bir sınıftan yeni bir sınıf türetmeyi, virtual ve override ile çalışma zamanında çok biçimlilik sağlamayı ve final ile mirası kapatmayı göreceksin. Miras, kod tekrarını azaltır ve sınıf hiyerarşileri kurmanı sağlar.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Player(std::string n, int l) : name(n), level(l) { } satırındaki iki nokta ne işe yarar?

main.cpp
Player(std::string n, int l) : name(n), level(l) { }
  • Sınıf hiyerarşisini belirtir
  • Member initializer list'i başlatır Doğru cevap
  • İki ifadeyi ayırır
  • Etiket belirtir

Açıklama: İki nokta, başlatma listesini gövdeden ayırır.

2 Destructor işaretini yaz

Soru
class Logger { public: ____Logger() { } };
Cevap
class Logger { public: ~Logger() { } };

Açıklama: Tilde destructor'ı belirtir: ~Logger().

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