Davut KARA

Bilişim Sistemleri Mühendisi

Bu blog, 5 yıl önce, bilişim ve diğer konularda hakkında, makalelerime yer vermek amacı ile açılmıştır.

Compe 225 | C++ Ders 8 – Destructor Nedir ?

C++ BannerConstructor, objemiz oluşturulduğunda çalışıyordu dolayısıyla ~destructor da objemiz kapandığında silindiğinde çalışır. Objenin ne zaman silindiğini anlamak için için eğer return kelimesi varsa return kelimesinden hemen öncesini yoksa bulunduğu scope un kapandığı yeri belirleyerek o noktada silindiğini anlayabilirsiniz.

Fazladan Not: Şuan görmedik ama ilerde new and delete işlemini gördüğümüzde obje delete edildiğinde de destructor çalışacak.

scope:  {} süslü parantezlerinin içinde kalan kısım scope dur kod bloğu diyede geçer.

Yani  main de return 0 dan bir önce destructor çalışır.

#include <iostream>
using namespace std;
class Person{
	private:
		string name;
		int age;
	public:
		Person(string n,int yas):name(n),age(yas){}
		}
		~Person(){
			cout << "Obje silindi.";
		}
};
int main(){//Scope burda başlar
	Person Kullanici("Davut",21);
	Cout << “Ali veli”;
	return 0;
}//Scope burda biter

Yani özetle destructor

  • Obje kapandığında çalışır.
  • Decleration ı ~Class_adı(){} şeklindedir.
  • Önemli Bilgi: Sırasıyla m1,m2,m3 adında class lar açıtığımızı düşünelim bu classlar kapandığı vakit destructor sondan başa doğru ters olarak çalışır yani m3,m2,m1 olarak çalışır.

#include <iostream>
using namespace std;
class Person{
	private:
		string name;
		int age;
	public:
		Person(string n,int yas):name(n),age(yas){}
		}
		~Person(){
			cout << "Obje silindi."<<name<<endl;
		}
};
int main(){
	Person Kullanici1("Davut",21);
	Person Kullanici2("Ahmet",23);
        Person Kullanici3("İsyankar06",17);
	return 0;
}

/*
OUTPUT:
Obje silindi.İsyankar06
Obje silindi.Ahmet
Obje silindi.Davut
*/

Yani burada gördüğünüz gibi destructor en son hangi class açıldıysa ilk onun destructor ı çalışacak şekilde oluyor. Dolayısıyla aşağıdan-yukarı, sondan-başa doğru çalışıyor.