Memahami Konstruktor C++: Default, Parameterized, dan Copy Dijelaskan
Memahami Konstruktor C++
Tutorial ini membahas konstruktor C++—apa itu, mengapa penting, dan cara mengimplementasikan konstruktor default, parameterized, dan copy dengan contoh yang jelas.
Sebuah konstruktor adalah fungsi anggota khusus yang berjalan secara otomatis saat objek diinstanisasi. Dalam C++, konstruktor berbagi namanya dengan kelas dan tidak menentukan tipe pengembalian.
class Wall { public: // Konstruktor Wall() { // kode inisialisasi } };
Konstruktor harus:
- Memiliki nama yang sama dengan kelas.
- Tidak mendeklarasikan tipe pengembalian.
- Dapat diakses (biasanya
public).
Konstruktor Default
Sebuah konstruktor tanpa parameter dikenal sebagai konstruktor default. Contoh Wall() di atas adalah salah satunya.
Contoh 1: Konstruktor Default
// Demonstrating a default constructor #include <iostream> using namespace std; class Wall { private: double length; public: // Default constructor Wall() { length = 5.5; cout << "Membuat dinding." << endl; cout << "Panjang = " << length << endl; } }; int main() { Wall wall1; return 0; }
Output
Membuat Dinding Panjang = 5.5
Saat wall1 diinstanisasi, konstruktor default menetapkan length ke 5.5 dan mencetak pesan-pesan tersebut.
Catatan: Jika kelas tidak memiliki konstruktor eksplisit, kompiler secara otomatis menghasilkan konstruktor default yang tidak melakukan apa pun.
Konstruktor Parameterized
Konstruktor parameterized menerima argumen untuk menginisialisasi data anggota saat pembuatan objek. Ini adalah cara yang disukai untuk menyiapkan status objek.
Contoh 2: Konstruktor Parameterized
// Menghitung luas dinding menggunakan konstruktor parameterized #include <iostream> using namespace std; class Wall { private: double length; double height; public: // Parameterized constructor Wall(double len, double hgt) { length = len; height = hgt; } double calculateArea() { return length * height; } }; int main() { Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Luas Dinding 1: " << wall1.calculateArea() << endl; cout << "Luas Dinding 2: " << wall2.calculateArea(); return 0; }
Output
Luas Dinding 1: 90.3 Luas Dinding 2: 53.55
Konstruktor menetapkan nilai yang diteruskan ke length dan height, memungkinkan calculateArea() untuk menghitung luas dinding.
Konstruktor Copy
Sebuah konstruktor copy membuat objek baru sebagai salinan tepat dari objek yang sudah ada. Ini dipanggil saat objek diinisialisasi dari objek lain dari tipe yang sama.
Contoh 3: Konstruktor Copy
#include <iostream> using namespace std; class Wall { private: double length; double height; public: // Parameterized constructor Wall(double len, double hgt) { length = len; height = hgt; } // Copy constructor Wall(Wall &obj) { length = obj.length; height = obj.height; } double calculateArea() { return length * height; } }; int main() { Wall wall1(10.5, 8.6); Wall wall2 = wall1; // Memanggil konstruktor copy cout << "Luas Dinding 1: " << wall1.calculateArea() << endl; cout << "Luas Dinding 2: " << wall2.calculateArea(); return 0; }
Output
Luas Dinding 1: 90.3 Luas Dinding 2: 90.3
Konstruktor copy menyalin length dan height dari wall1 ke wall2, memastikan kedua objek memiliki status yang sama.
Catatan: Konstruktor terutama menginisialisasi objek, tetapi juga memungkinkan logika kustom untuk berjalan selama pembuatan objek.