crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Constructor ve Destructor: Nesnenin Yaşam Döngüsü
Bir nesne oluşturulduğunda bellekte yer ayrılması yetmez; başlangıç değerlerinin verilmesi ve kaynakların (bellek, dosya, ağ bağlantısı) hazırlanması gerekir. Aynı şekilde işi bittiğinde bu kaynakların temizlenmesi hayati önem taşır.
1. Constructor (Yapıcı Metot) Nedir?
Bir sınıfın nesnesi oluşturulduğu anda otomatik olarak çalışan özel bir fonksiyondur.
İsmi: Sınıf ismiyle tamamen aynı olmalıdır.
Geri Dönüş Tipi: Hiçbir geri dönüş tipi (void bile) yoktur.
Amacı: Değişkenlere varsayılan değerler atamak veya gerekli ayarları yapmaktır.
C++:
class Oyuncu {
public:
string isim;
int saglik;
// Parametreli Constructor
Oyuncu(string ad, int hp) {
isim = ad;
saglik = hp;
cout << isim << " oyuna girdi!" << endl;
}
};
2. Destructor (Yıkıcı Metot) Nedir?
Nesnenin ömrü bittiğinde (kapsam dışına çıktığında veya delete edildiğinde) otomatik olarak çalışan fonksiyondur.
İsmi: Sınıf isminin başına tilde (~) işareti konularak tanımlanır.
Parametre Almaz: Aşırı yüklenemez (overload edilemez), her sınıfın sadece bir yıkıcısı olabilir.
Amacı: Dinamik olarak ayrılan bellekleri (new ile alınan yerleri) temizlemek veya açık dosyaları kapatmaktır.
C++:
class DosyaYonetici {
public:
~DosyaYonetici() {
cout << "Kaynaklar serbest birakildi, dosya kapatiliyor..." << endl;
}
};
3. Örnek: Bellek Yönetimi ile Kullanım
Constructor ve Destructor'ın gerçek gücü, RAII (Kaynak Edinimi Başlatmadır) prensibinde ortaya çıkar.
C++:
class VeriYigini {
private:
int* dizi;
public:
VeriYigini(int boyut) {
dizi = new int[boyut]; // Yer ayir (Constructor)
cout << "Bellek ayrildi." << endl;
}
~VeriYigini() {
delete[] dizi; // Yeri iade et (Destructor)
cout << "Bellek temizlendi." << endl;
}
};
Constructor ve Destructor Karşılaştırması
| Özellik | Constructor (Yapıcı) | Destructor (Yıkıcı) |
|---|---|---|
| Çalışma Zamanı | Nesne oluşturulurken. | Nesne yok edilirken. |
| Parametre | Alabilir (Overload edilebilir). | Asla alamaz. |
| Sayı | Birden fazla olabilir. | Sadece bir adet olabilir. |
| Görevi | Başlatma ve kurulum. | Temizlik ve sonlandırma. |
Sonuç
Constructor ve Destructor yapılarını doğru kullanmak, programınızın "bellek sızıntısı" (memory leak) yapmasını engellemenin en profesyonel yoludur. Özellikle dinamik bellek yönetimiyle uğraşıyorsanız, new yaptığınız her şeyi yıkıcı metotta delete etmek altın kuraldır.