Soru kodlamada yıkıcı kullanımı

  • Konuyu açan Konuyu açan TheAdmin33
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 105
Herhangi bir konuda danışmak istediğiniz soru varsa bu öneki seçebilirsiniz.

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.044
Çözümler
59
Beğeni
2.650
Puan
1.849
Ticaret Puanı
0
ben bir sistem yapmak istiyorum bunun içinde bir class olşturacam bu class ın içinde yapıcı ve yıkıcı ne amaçla kullanmalıyım bir türlü anlayamadım. yapıcı kesin olmak zorunda onu anladımda yıkıcı bazı yerde kullanılıyor bazı yerde kullanılmıyor nedenini bir türlü anlayamadım bilen varmı?

yapmak istediğim sistem simya ile ilgili olucak item oyun içinde yaratıldığında matris içindeki verileri kullanarak işlemler yapıcak. sistem Kostüm Set Bonus Sistemi ile benzer mantıkla çalışacak ama burada yıkıcı kullanmadım kullanmalımıydım yoksa kullanmayarak iyimi yaptım bilemedim. chatgpt ye sordum 1001 tane şey söyledi kafam iyice karıştı.
 
header dosyasında malloc, calloc falan kullanmayacaksan ~TestClass() = default; kullan tabii bu header dosyasında ki verilerin default değerlere sahip olmasını gerektirir;

bool testvariable;

yerine

bool testvariable = false;

kullanman gerekir.

bu arada smart pointer kullanacaksan malloc kullandığın halde = default kullanabilirsin, default destructor çalıştığında otomatik silecektir belleği.


aynı şekilde constructor içinde geçerli bu dediklerim, header dosyasında ki tanımlamalara default initializer atarsan TestClass() = default; kullanabilirsin
 
hem yapıcı hem yıkıcı içinde geçerli olmak üzere ikisi içerisindede değişken atamak dışında bir işlem yapmamanı tavsiye ederim bu dediğimi teknik olarak değil tecrübe olarak söylüyorum. bu yapılar içerisinde kullanılan işlemler gereğinden fazla erken ya da geç çalışırsa ya da sınıfı taşıma ya da kopyalama işleminde birden fazla şekilde hatalı ya da kontrolsüz çalışırsa exception crash ya da memory leak'e sebep olabiliyor
 
Yorum yapmaya gelmiştim ama geç kalmışım 😄, Koray'ın söylediğine ek olarak özellikle yıkıcıları aşırı yüklemekten kaçınmanı tavsiye ederim, basit bir sistem için oluşturup kullanacaksan muhtemelen bir problem yaşamazsın, anladığım kadarıyla sen bunların tam olarak ne için kullanıldığını da öğrenmek istiyorsun bari bende onun hakkında bir yorum yapayım.

Bilmen gereken 4 tane şey var, ilk olarak yapıcılar; yapıcı kullandığın bir nesnenin başlangıcını, bellek tahsisini vs. ayarlar, ikinci olarak yıkıcı; bu nesneyle işin bittiği zaman bunun memory leak oluşturmadan silinmesini ve belleğin serbest bırakılmasını sağlar, bileceğin ana temel ikili bu ama bunların haricinde Metin2 kaynağında da örnekleri olan kopya yapıcı ve taşıyıcı yapıcılar da var, kopya yapıcı oluşturduğun bir nesnenin kopyasını oluşturduğun zaman onun için çağırdığın bir kopya olur, taşıyıcı yapıcı bir nesnedeki belleğini başka bir nesneye aktarmak istediğin zaman kullanılır, yalnız constructor ve destructor C++'da dikkatli ve doğru kullanılması gereken önemli şeylerin içindedir, yaptığınız sistemden sonra bunların doğru ve zamanında çalıştığına emin olun mutlaka ve bundan önce internetteki kaynaklardan bunların tam olarak ne işe yaradığını ve nasıl kullanıldığını inceleyin derim, kolay gelsin.
 
Üst