Nesne Ömrü
Nesnelerin ne zaman oluşturulup yok edildiğini öğrenin
Nesne Ömrü, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. 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.
Nesneler Ne Zaman Oluşturulur
Bir nesnenin lifetime süresi, depolama alanı ayrıldıktan ve kurucusu tamamlandıktan sonra başlar. Bu noktadan itibaren nesne tamamen kullanılabilir.
#include <iostream>
struct Widget {
Widget() { std::cout << "born\n"; }
};
int main() {
Widget w; // constructor runs here
}Nesneler Ne Zaman Yok Olur
lifetime, yıkıcı çalıştığında sona erer. Yığın nesnesi için bu, kapsamının kapanış ayracında gerçekleşir.
#include <iostream>
struct Widget {
~Widget() { std::cout << "dies\n"; }
};
int main() {
Widget w;
std::cout << "alive\n";
} // ~Widget runs hereOluşturma ve Yok Etme Sırası
Nesneler, oluşturulma sırasının tersine yok edilir. En son oluşturulan nesne, ilk olarak kaldırılır.
#include <iostream>
struct Tag {
int id;
Tag(int i) : id(i) { std::cout << "make " << id << "\n"; }
~Tag() { std::cout << "drop " << id << "\n"; }
};
int main() {
Tag a(1);
Tag b(2); // dropped before a
}Otomatik (Yığın) lifetime
Otomatik nesneler, onları kapsayan bloğun süresi boyunca yaşar. Bu, en yaygın ve en güvenli lifetime modelidir.
Dinamik (Öbek) lifetime
new ile oluşturulan öbek nesneleri, delete çağrılana kadar yaşar; bunların lifetime süresini kapsam değil, siz denetlersiniz.
#include <iostream>
struct Widget {
~Widget() { std::cout << "dies\n"; }
};
int main() {
Widget* w = new Widget();
std::cout << "still alive\n";
delete w; // destructor runs here
}Statik lifetime
static depolama alanına sahip nesneler programın tamamı boyunca yaşar. İşlev yerelindeki bir static, ilk kullanımda bir kez oluşturulur.
#include <iostream>
int next() {
static int counter = 0; // built once
return ++counter;
}
int main() {
std::cout << next() << next() << next() << "\n";
}Geçici Nesneler
Bir ifade içinde oluşturulan geçici nesne genellikle tam ifadenin (noktalı virgülün) sonunda yok olur.
#include <iostream>
#include <string>
int main() {
std::cout << (std::string("a") + "b") << "\n";
} // temporary string dies after this lineÜyeler Gövdeden Önce Oluşturulur
Bir sınıfın üye nesneleri, kapsayan nesnenin kurucu gövdesi çalışmadan önce oluşturulur ve yıkıcı gövdesinden sonra yok edilir.
#include <iostream>
#include <string>
struct Engine { Engine() { std::cout << "engine\n"; } };
struct Car {
Engine e;
Car() { std::cout << "car\n"; }
};
int main() { Car c; }const Başvurusu ile lifetime Uzatma
Geçici bir nesneyi const& ile bağlamak, lifetime süresini başvuruyla aynı olacak şekilde uzatır; bu, C++'ın kullanışlı bir kuralıdır.
#include <iostream>
#include <string>
int main() {
const std::string& s = std::string("hi");
std::cout << s << "\n"; // s still valid
}lifetime Sonrası Kullanım
lifetime süresi sona erdikten sonra bir nesneye dokunmak tanımsız davranıştır; bunun klasik örnekleri sarkan başvuru veya serbest bırakma sonrası kullanım hatalarıdır.
lifetime RAII'ı Yönlendirir
Yıkıcılar lifetime sonunda belirlenebilir biçimde çalıştığı için C++, kaynak temizliğini lifetime süresine bağlar; bu, bir sonraki kursta ele alınacak RAII'ın temelidir.
Hızlı Kontrol
Nesne lifetime süresi konusundaki anlayışınızı sınayın.
Özet
Nesne lifetime süresinin oluşturma işleminden sonra başladığını ve yok edilmeyle sona erdiğini öğrendiniz. Otomatik nesneler kapsamı, dinamik nesneler new/delete işlemlerini izler ve statik nesneler programın tamamı boyunca yaşar. Yok etme işlemi ters sırada gerçekleşir; RAII'ın temeli budur.
Sıkça Sorulan Sorular
“Nesne Ömrü” dersi ücretsiz mi?
Evet — “Nesne Ömrü” 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.
“Nesne Ömrü” dersinde ne öğreneceğim?
Nesnelerin ne zaman oluşturulup yok edildiğini öğrenin 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 3. dersidir.
“Nesne Ömrü” 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.