0Pricing
C++ Academy · Pelajaran

Prinsip RAII

Kaitkan sumber daya dengan masa hidup objek

Prinsip RAII adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Arti RAII

RAII adalah singkatan dari Resource Acquisition Is Initialization. Sumber daya diperoleh dalam konstruktor dan dibebaskan dalam destruktor, sehingga masa hidupnya terikat pada suatu objek.

Gagasan Inti

Bungkus setiap sumber daya—memori, berkas, kunci, dan soket—dalam sebuah objek. Saat objek keluar dari lingkup, destruktornya membebaskan sumber daya tersebut secara otomatis.

#include <iostream>

class Resource {
public:
    Resource() { std::cout << "acquire\n"; }
    ~Resource() { std::cout << "release\n"; }
};

int main() {
    Resource r;   // acquired
}                 // released automatically

Mengapa RAII Sangat Andal

Pembersihan dijamin bahkan jika fungsi kembali lebih awal atau pengecualian dilemparkan. Anda tidak akan pernah lupa membebaskan sumber daya yang telah Anda bungkus.

Pembungkus RAII Sederhana

Berikut adalah pemilik int yang membebaskan memori dinamisnya dalam destruktor—tanpa delete manual di lokasi pemanggilan.

#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";
}

Pembersihan Saat Pengembalian Lebih Awal

Karena destruktor dijalankan saat keluar dari lingkup, return lebih awal tetap memicu pembersihan.

#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); }

Pembersihan Saat Pengecualian

Jika pengecualian mengurai tumpukan, setiap objek RAII yang telah selesai dikonstruksi akan dihancurkan sepanjang proses tersebut. Sumber daya tidak pernah terlantar.

Tipe RAII Standar

Pustaka standar penuh dengan RAII: std::unique_ptr, std::lock_guard, std::fstream, dan std::vector semuanya melakukan pembersihan dalam destruktornya.

#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
}

Tanpa Kode Pembersihan Manual

Dengan RAII, Anda tidak perlu lagi menulis delete, fclose, atau unlock secara manual. Pemanggilan destruktor yang disisipkan kompiler akan melakukannya untuk Anda.

Satu Pemilik untuk Setiap Sumber Daya

Setiap sumber daya sebaiknya memiliki satu pemilik RAII yang bertanggung jawab untuk membebaskannya. Berbagi kepemilikan dengan aman memerlukan tipe khusus seperti std::shared_ptr.

RAII Dapat Digabungkan

Objek RAII dapat berisi objek RAII lainnya. Penghancuran berlangsung berantai secara otomatis, sehingga sumber daya yang kompleks dibersihkan dengan benar.

#include <memory>
#include <vector>

struct Session {
    std::vector<int> data;                 // RAII
    std::unique_ptr<int> token;            // RAII
};   // both members freed automatically

RAII vs Pengelolaan Manual

Pengelolaan manual rentan terhadap kesalahan; RAII menjadikan pembersihan yang benar sebagai perilaku bawaan. Dalam setiap kasus, utamakan pembungkus RAII daripada pasangan pemerolehan dan pelepasan mentah.

Pemeriksaan Singkat

Uji pemahaman Anda tentang RAII.

Rangkuman

Anda telah mempelajari prinsip RAII: memperoleh sumber daya dalam konstruktor dan membebaskannya dalam destruktor. Prinsip ini menjamin pembersihan saat keluar secara normal, pengembalian lebih awal, dan pengecualian. Pustaka standar menggunakan RAII di mana-mana, dan kode Anda juga seharusnya demikian.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Prinsip RAII” gratis?

Ya — teks lengkap “Prinsip RAII” 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 “Prinsip RAII”?

Kaitkan sumber daya dengan masa hidup objek 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 1 dari 4.

Berapa lama pelajaran “Prinsip RAII” 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

  1. Prinsip RAII
  2. Destruktor dan Pembersihan
  3. Aturan Tiga/Lima
  4. Guard Scope
← Kembali ke C++ Academy