Menu
CoddyTech

Konstruktor Default

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 18 dari 104.

konstruktor default adalah konstruktor yang dapat dipanggil tanpa argumen. Konstruktor ini menginisialisasi object saat tidak ada nilai awal yang diberikan. Setiap class memerlukan cara untuk membuat object dalam keadaan default yang valid.

Jika kamu tidak mendefinisikan konstruktor apa pun, compiler menghasilkan konstruktor default implisit yang tidak melakukan apa pun untuk tipe primitif dan memanggil konstruktor default untuk object anggota.

class Player {
    int health;
    int score;
public:
    Player() {           // Konstruktor bawaan
        health = 100;
        score = 0;
    }
};

Player p1;               // Memanggil konstruktor bawaan
Player p2{};             // Juga memanggil konstruktor bawaan

Setelah kamu mendefinisikan constructor apa pun (seperti constructor berparameter), compiler tidak lagi membuat constructor default. Kamu harus mendefinisikannya secara eksplisit jika masih membutuhkannya.

class Enemy {
    int damage;
public:
    Enemy(int d) : damage(d) {}  // Hanya ada konstruktor berparameter
};

Enemy e1(10);    // Berfungsi
Enemy e2;        // error! Tidak ada konstruktor bawaan

Dalam C++ modern, kamu dapat meminta secara eksplisit konstruktor default yang dibuat oleh compiler menggunakan = default:

class Item {
    int id;
public:
    Item() = default;           // Compiler membuat konstruktor bawaan
    Item(int i) : id(i) {}
};

Konstruktor default penting untuk membuat array berisi object dan untuk class yang digunakan dalam container seperti std::vector, yang mungkin perlu membuat elemen tanpa argumen.

challenge icon

Tantangan

Mudah

Mari kita buat sistem penghitung sederhana yang menunjukkan cara konstruktor default menginisialisasi object ke keadaan awal yang valid.

Kamu akan membuat dua file untuk mengatur kodemu:

  • Counter.h: Definisikan class Counter yang melacak nilai hitungan. Class-mu harus memiliki:
    • Atribut count privat (integer)
    • Atribut name privat (string) untuk mengidentifikasi penghitung
    • Konstruktor default yang menginisialisasi count dengan 0 dan name dengan "Unnamed", lalu mencetak "Counter created: <name>"
    • Method increment() yang menambah hitungan sebanyak 1
    • Method getCount() yang mengembalikan hitungan saat ini
    • Method getName() yang mengembalikan nama penghitung
  • main.cpp: Tunjukkan bahwa konstruktor default berfungsi saat membuat object dengan berbagai cara. Baca angka dari input yang menunjukkan berapa kali penghitung harus ditambah, lalu:
    • Buat Counter menggunakan inisialisasi langsung: Counter c1;
    • Buat Counter lain menggunakan inisialisasi kurung kurawal: Counter c2{};
    • Tambah nilai c1 sebanyak yang ditentukan oleh input
    • Cetak "<name>: <count>" untuk c1
    • Cetak "<name>: <count>" untuk c2

Kedua penghitung harus dimulai dari 0 berkat konstruktor default-mu, tetapi hanya c1 yang akan ditambah nilainya. Ini menunjukkan cara konstruktor default memastikan setiap object dimulai dalam keadaan yang dapat diprediksi dan valid, terlepas dari cara object tersebut dibuat.

Sertakan file header-mu di main.cpp menggunakan #include "Counter.h".

Coba sendiri

#include <iostream>
#include "Counter.h"

using namespace std;

int main() {
    // Baca berapa kali nilai harus ditambah
    int n;
    cin >> n;

    // TODO: Buat Counter dengan inisialisasi langsung: Counter c1;

    // TODO: Buat Counter lain dengan inisialisasi kurung kurawal: Counter c2{};

    // TODO: Tambah nilai c1 sebanyak n kali

    // TODO: Cetak "<name>: <count>" untuk c1

    // TODO: Cetak "<name>: <count>" untuk c2

    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online