21 Mart 2025 Cuma

C++ Destructorlar Nedir ?




 C++'da destructorlar (yıkıcılar), bir sınıfın nesnesi yok edildiğinde otomatik olarak çağrılan özel üye fonksiyonlardır. Temel amaçları, nesnenin ömrü boyunca ayrılmış kaynakları serbest bırakmak ve temizleme işlemlerini gerçekleştirmektir.


Destructorların Özellikleri:

  • Sınıf Adıyla Aynı İsim: Destructorlar, sınıf adıyla aynı isme sahiptir, ancak başına tilde (~) işareti eklenir. Örneğin, MyClass adlı bir sınıfın destructor'ı ~MyClass() şeklinde tanımlanır.
  • Geri Dönüş Tipi Yok: Destructorların herhangi bir geri dönüş tipi (void dahil) yoktur.
  • Parametre Almama: Destructorlar parametre alamazlar.
  • Otomatik Çağrı: Bir nesne kapsam dışına çıktığında (örneğin, bir fonksiyon sona erdiğinde) veya delete operatörü ile manuel olarak yok edildiğinde destructor otomatik olarak çağrılır.
  • Sanal Olabilirler: Polimorfizmde temel sınıf destructor'ının sanal (virtual) olması önemlidir. Bu, türetilmiş sınıf nesnelerinin doğru şekilde yok edilmesini sağlar.
Destructorların Kullanım Amaçları:

  • Bellek Serbest Bırakma: Nesne tarafından dinamik olarak ayrılmış bellek (örneğin, new ile ayrılan bellek) delete ile serbest bırakılır.
  • Dosya Kapatma: Açık dosyaların kapatılması.
  • Veritabanı Bağlantılarını Kapatma: Açık veritabanı bağlantılarının kapatılması.
  • Diğer Kaynakları Serbest Bırakma: Nesne tarafından kullanılan diğer kaynakların (örneğin, ağ bağlantıları, mutexler) serbest bırakılması.
Destructor Örneği:

C++

#include <iostream>

class MyClass {
private:
int* data;

public:
MyClass(int size) {
data = new int[size];
std::cout << "MyClass oluşturuldu." << std::endl;
}

~MyClass() {
delete[] data;
std::cout << "MyClass yok edildi." << std::endl;
}
};

int main() {
MyClass obj(10);
return 0;
}

Bu örnekte, MyClass nesnesi oluşturulduğunda dinamik olarak bir tamsayı dizisi ayrılır. Nesne yok edildiğinde, destructor bu diziyi serbest bırakır.

Önemli Notlar:

  • Destructorlar, kaynak sızıntılarını önlemek için kritik öneme sahiptir.
  • Bir sınıfın destructor'ı tanımlanmamışsa derleyici varsayılan bir destructor oluşturur. Ancak, sınıf dinamik bellek veya diğer kaynakları yönetiyorsa özel bir destructor tanımlamak önemlidir.
  • Sanal destructorlar, polimorfizmde temel sınıf işaretçileri aracılığıyla türetilmiş sınıf nesnelerini doğru şekilde yok etmek için kullanılır.

Benzer Yayınlar

C++ Destructorlar Nedir ?
4/ 5
Oleh

Abone Olun

Yazılarımızı beğeniyor musunuz?Abone Olun Yazılarımı Kaçırmayın.

Lütfen yorum yaparken şunlara dikkat ediniz:

Küfürlü, siyasi veya huzur bozucu yorumlar yapmamaya,
Reklam, spam gibi yorumlar yapmamaya.