Benim acaba Ali Abi varken çok aktif cevap yazmam hoş oluyor mu bilmiyorum. Ama bildiğimi sandığım konularda sorduğun için yazmak istiyorum.
Benim RAII konusunda anladığım aslında çok basit Consturctor'da aldığını Destructor'da ver. İsminin çok havalı olması biraz kompleks bir özellikmiş gösteriyor fakat bildiğin C++ 'in objenin ömrünün bittiğinde Destructor çağrılması üstüne kurulan bir düşünüş biçimi hariç bir şey değil.
Çöp toplayıcıdan farkı RAII bir masrafı yok , işte ani performans düşüşleri yok. Aslında bu iki konu çok da bağlantılı değil çünkü RAII sadece hafıza ile ilgili değil. Basitce dosyamı açtın CTOR 'de o zaman DTOR'de kapat. Veya mutex 'mi kilitledin o zaman DTOR'de aç. Hafıza bu konulardan sadece birisi memory'i mi aldın heap'den DTOR'de ver. RAII ile bütün hafıza sorunlarımızı çözemeyiz örneğin
int* a = new a; // şimdi dtor yok birşey yok delete demezsem leak olcak RAII buralarda söz konusu değil
shared_ptr<int> a = std::make_shared<int>(5);
// çöp toplayıcı örneği vermek zor olacağı için başka bir hafıza yönetim biçimi
//ile örnek vermek istedim. Sorun yok delete demesem bile
Çöp toplayıcı çok derin bir konu. Ama RAII ile farkları konusunda çok az yardımcı olmuştur yukarda yazdıklarım umarım.
Alıntı:
> Ve neden c++ ta birçok yerde kullanılmıyor
RAII C++ çok fazla kullanılıyor. Aslında DTOR 'de ne zaman birşeyler yapsan çoğu ihtimalle RAII felsefesini kullanmış oluyorsun.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]