RAII İlkesi
Kaynakları nesne ömrüne bağlayın
RAII İlkesi, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
RAII Ne Anlama Gelir
RAII, Resource Acquisition Is Initialization ifadesinin kısaltmasıdır. Bir kaynak kurucuda edinilir ve yıkıcıda serbest bırakılır; böylece lifetime süresi bir nesneye bağlanır.
Temel Fikir
Her kaynağı — bellek, dosyalar, kilitler ve soketleri — bir nesnenin içine sarın. Nesne kapsam dışına çıktığında yıkıcısı, kaynağı otomatik olarak serbest bırakır.
#include <iostream>
class Resource {
public:
Resource() { std::cout << "acquire\n"; }
~Resource() { std::cout << "release\n"; }
};
int main() {
Resource r; // acquired
} // released automaticallyRAII Neden Güçlüdür
Bir işlev erken dönse veya bir özel durum fırlatılsa bile temizleme işlemi garanti edilir. Sardığınız bir kaynağı serbest bırakmayı asla unutamazsınız.
Küçük Bir RAII Sarmalayıcısı
Burada, öbek belleğini yıkıcısında serbest bırakan bir int sahibi gösterilmektedir; çağrı noktalarında elle delete gerekmez.
#include <iostream>
class IntBox {
int* p;
public:
IntBox(int v) : p(new int(v)) {}
~IntBox() { delete p; }
int get() const { return *p; }
};
int main() {
IntBox b(42);
std::cout << b.get() << "\n";
}Erken Dönüşte Temizleme
Yıkıcı kapsamdan çıkılırken çalıştığı için erken bir return de temizleme işlemini başlatır.
#include <iostream>
class Guard {
public:
~Guard() { std::cout << "cleaned\n"; }
};
void work(bool stop) {
Guard g;
if (stop) return; // g still cleaned
std::cout << "more work\n";
}
int main() { work(true); }Özel Durumlarda Temizleme
Bir özel durum yığını çözerse, tamamen oluşturulmuş her RAII nesnesi bu süreçte yok edilir. Kaynaklar asla ortada bırakılmaz.
Standart RAII Türleri
Standart kitaplık RAII örnekleriyle doludur: std::unique_ptr, std::lock_guard, std::fstream ve std::vector yıkıcılarında temizleme yapar.
#include <vector>
#include <memory>
int main() {
std::vector<int> v{1, 2, 3}; // frees its buffer
auto p = std::make_unique<int>(9); // frees its int
}Elle Temizleme Kodu Yazmayın
RAII kullanırken delete, fclose veya unlock ifadelerini elle yazmayı bırakırsınız. Derleyicinin eklediği yıkıcı çağrıları bunu sizin için yapar.
Her Kaynak için Tek Sahip
Her kaynağın, onu serbest bırakmaktan sorumlu tek bir RAII sahibi olmalıdır. Sahipliği güvenli biçimde paylaşmak için std::shared_ptr gibi özel türler gerekir.
RAII Birleşebilir
Bir RAII nesnesi başka RAII nesneleri içerebilir. Yok etme işlemi otomatik olarak zincirleme gerçekleşir; böylece karmaşık kaynaklar doğru biçimde temizlenir.
#include <memory>
#include <vector>
struct Session {
std::vector<int> data; // RAII
std::unique_ptr<int> token; // RAII
}; // both members freed automaticallyRAII ve Elle Yönetim
Elle yönetim hataya açıktır; RAII, doğru temizlemeyi varsayılan hâle getirir. Her durumda ham edinme ve serbest bırakma çiftleri yerine RAII sarmalayıcılarını tercih edin.
Hızlı Kontrol
RAII konusundaki anlayışınızı sınayın.
Özet
RAII ilkesini öğrendiniz: kaynağı kurucuda edinin, yıkıcıda serbest bırakın. Bu, normal çıkışta, erken dönüşte ve özel durumlarda temizlemeyi garanti eder. Standart kitaplık her yerde RAII kullanır; kodunuz da kullanmalıdır.
Sıkça Sorulan Sorular
“RAII İlkesi” dersi ücretsiz mi?
Evet — “RAII İlkesi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“RAII İlkesi” dersinde ne öğreneceğim?
Kaynakları nesne ömrüne bağlayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“RAII İlkesi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.