Lompati ke konten utama
Modul 4 · Pelajaran 2 dari 210/18 dalam kursus~12 min
Pelajaran modul (2/2)

Konstruktor dan Destruktor

Konstruktor dan destruktor adalah fungsi anggota khusus yang mengelola siklus hidup objek: pembuatannya (inisialisasi) dan penghancurannya (pembersihan sumber daya).

Konstruktor

Konstruktor dipanggil secara otomatis ketika objek kelas dibuat di memori.

  • Memiliki nama yang sama dengan kelasnya.
  • tidak memiliki tipe pengembalian (bahkan void).
  • Dapat kelebihan beban untuk menerima kumpulan parameter yang berbeda.
C++
#include <iostream>
#include <string>

class Item {
private:
    std::string name;
    double price;

public:
    // Parameterized constructor
    Item(std::string itemName, double itemPrice) {
        name = itemName;
        price = itemPrice;
        std::cout << "Object " << name << " created." << std::endl;
    }

    void display() {
        std::cout << name << ": " << price << " EUR" << std::endl;
    }
};

int main() {
    // Implicit call to the constructor passing parameters
    Item book("Libro C++", 29.99);
    book.display();
    return 0;
}

Konstruktor Default

Jika Anda tidak mendefinisikan konstruktor apa pun, kompiler C++ akan menghasilkan konstruktor default tanpa parameter. Namun, jika Anda menulis konstruktor khusus dengan parameter, kompiler tidak lagi menghasilkan konstruktor default secara otomatis, jadi Anda perlu mendefinisikannya secara eksplisit jika diperlukan:

C++
class Point {
public:
    int x;
    int y;

    // Explicit default constructor
    Point() {
        x = 0;
        y = 0;
    }
};

Destruktor

Destructor dipanggil secara otomatis ketika objek keluar dari cakupan atau secara eksplisit dihapus dari memori.

  • Memiliki nama yang sama dengan kelas yang diawali dengan tanda gelombang ~ (misalnya ~Item()).
  • Ia tidak menerima parameter dan tidak memiliki tipe pengembalian.
  • Digunakan untuk melepaskan sumber daya (misalnya menutup file, mengosongkan memori yang dialokasikan secara dinamis).
C++
class ResourceManager {
public:
    ~ResourceManager() {
        // Cleanup code
        std::cout << "Resources released." << std::endl;
    }
};

Cobalah sendiri

Latihan#cpp.m4.l2.e1
Upaya: 0Memuat…

Tentukan kelas bernama Pengguna dengan nama pengguna std::string anggota pribadi. Tambahkan konstruktor publik yang menerima string (Pengguna(std::nama string)) dan menggunakannya untuk menginisialisasi nama pengguna. Tambahkan pengambil publik std::string getUsername() yang mengembalikan nama pengguna. Pada dasarnya, buat objek Pengguna dengan meneruskan 'Alice' sebagai nama, dan cetak nama penggunanya menggunakan std::cout.

Memuat editor…
Tunjukkan petunjuk

Konstruktor memiliki nama yang sama dengan kelas dan tidak menentukan tipe pengembalian apa pun, bahkan `void`.

Solusi tersedia setelah 3 upaya

Latihan#cpp.m4.l2.e2
Upaya: 0Memuat…

Definisikan kelas bernama Point dengan dua anggota bilangan bulat publik: x dan y. Tambahkan konstruktor default (tanpa parameter) yang menginisialisasi x dan y ke 0. Di main, buat objek Point menggunakan konstruktor default dan cetak x dan y.

Memuat editor…
Tunjukkan petunjuk

Konstruktor default tidak memerlukan argumen: `Point() { x = 0; kamu = 0; }`.

Solusi tersedia setelah 3 upaya