Masa Hidup Objek
Kapan objek dibuat dan dihancurkan
Masa Hidup Objek adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Saat Objek Dibuat
Masa hidup suatu objek dimulai setelah penyimpanannya dialokasikan dan konstruktornya selesai. Sejak saat itu, objek tersebut dapat digunakan sepenuhnya.
#include <iostream>
struct Widget {
Widget() { std::cout << "born\n"; }
};
int main() {
Widget w; // constructor runs here
}Saat Objek Dihancurkan
Masa hidup berakhir ketika destruktor dijalankan. Untuk objek tumpukan, hal itu terjadi pada kurung kurawal penutup lingkupnya.
#include <iostream>
struct Widget {
~Widget() { std::cout << "dies\n"; }
};
int main() {
Widget w;
std::cout << "alive\n";
} // ~Widget runs hereUrutan Konstruksi dan Penghancuran
Objek dihancurkan dalam urutan kebalikan dari konstruksinya. Objek yang terakhir dibuat akan dibongkar terlebih dahulu.
#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
}Masa Hidup Otomatis (Tumpukan)
Objek otomatis hidup selama blok yang membungkusnya berlangsung. Ini adalah model masa hidup yang paling umum dan paling aman.
Masa Hidup Dinamis (Memori Dinamis)
Objek pada memori dinamis yang dibuat dengan new tetap ada sampai delete dipanggil—masa hidupnya dikendalikan oleh Anda, bukan oleh lingkup.
#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
}Masa Hidup Statis
Objek dengan penyimpanan static hidup selama seluruh program. Objek statis lokal fungsi dibuat satu kali saat pertama digunakan.
#include <iostream>
int next() {
static int counter = 0; // built once
return ++counter;
}
int main() {
std::cout << next() << next() << next() << "\n";
}Objek Sementara
Objek sementara yang dibuat dalam suatu ekspresi biasanya mati di akhir ekspresi lengkap (tanda titik koma).
#include <iostream>
#include <string>
int main() {
std::cout << (std::string("a") + "b") << "\n";
} // temporary string dies after this lineAnggota Dikonstruksi Sebelum Isi Konstruktor
Objek anggota suatu kelas dikonstruksi sebelum isi konstruktor objek yang membungkusnya dijalankan, dan dihancurkan setelah isi destruktornya selesai.
#include <iostream>
#include <string>
struct Engine { Engine() { std::cout << "engine\n"; } };
struct Car {
Engine e;
Car() { std::cout << "car\n"; }
};
int main() { Car c; }Perpanjangan Masa Hidup oleh Referensi const
Mengikat objek sementara ke const& memperpanjang masa hidupnya agar sama dengan masa hidup referensi tersebut—aturan C++ yang praktis.
#include <iostream>
#include <string>
int main() {
const std::string& s = std::string("hi");
std::cout << s << "\n"; // s still valid
}Penggunaan Setelah Masa Hidup Berakhir
Menyentuh objek setelah masa hidupnya berakhir merupakan perilaku tak terdefinisi—bug klasik berupa referensi menggantung atau penggunaan setelah dibebaskan.
Masa Hidup Menjadi Dasar RAII
Karena destruktor dipanggil secara deterministik pada akhir masa hidup, C++ mengaitkan pembersihan sumber daya dengan masa hidup—dasar RAII, yang dibahas dalam kursus berikutnya.
Pemeriksaan Singkat
Uji pemahaman Anda tentang masa hidup objek.
Rangkuman
Anda telah mempelajari bahwa masa hidup objek dimulai setelah konstruksi dan berakhir saat penghancuran. Objek otomatis mengikuti lingkup, objek dinamis mengikuti new/delete, dan objek statis bertahan selama seluruh program. Penghancuran berlangsung dalam urutan kebalikan—dasar bagi RAII.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Masa Hidup Objek” gratis?
Ya — teks lengkap “Masa Hidup Objek” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Masa Hidup Objek”?
Kapan objek dibuat dan dihancurkan Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Masa Hidup Objek” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Alokasi Stack
- Alokasi Heap dengan new/delete
- Masa Hidup Objek
- Bug Memori yang Umum