0Pricing
C++ Academy · Ders

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 here

Oluş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.

Bu kursun tüm dersleri

  1. Yığın Ayırma
  2. new/delete ile Öbek Ayırma
  3. Nesne Ömrü
  4. Yaygın Bellek Hataları
← C++ Academy Sayfasına Dön