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.
C++ Destructorlar Nedir ?
4/
5
Oleh
WebYazilimciniz

WebYazilimciniz
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.