Nama : Kenneth
NIM : 1701290425
Kelas : 02PPT
TM 02
- Copy constructor suatu klas dieksekusi jika obyek klas di-copy dengan mekanisme di bawah ini kecuali
a. direct assignment b. initialization
c. passing by value c. return by value
- Fungsi anggota yang otomatis di-create oleh kompilator meskipun ia tidak secara eksplisit ditulis oleh pemrogram dalam definisi klas adalah opsi-opsi di bawah ini kecuali
a. default constructor b. copy constructor
c. destructor d. overloaded constructor
- Level akses utility function atau helper function suatu klas adalah
a. public b. protected c. private d. inline
- Untuk class X, sintaks copy constructor adalah
a. X(& X) b. X(const X&)
c. X(const &X) d. X(X &)
5. C++ class mempunyai
- satu konstruktor dan satu destructor
- lebih dari satu konstruktor dan satu destructor
- satu konstruktor dan lebih dari satu destructor
- lebih dari satu konstruktor dan lebih dari satu destructor
6. Apa keluaran dari penggalan program berikut ini:
class Rational {
public:
Rational() { cout << “OBYEK LAHIR.\n”;
~Rational() { cout << “OBYEK MATI. \n”; }
private:
int num, den;
};
main() {
{ Rational x;
cout << “SEKARANG x HIDUP.\n”;
}
cout << “ANTAR BLOK.\n”;
{ Rational y;
cout << “SEKARANG y HIDUP.\n”;
}
}
7. Uraikan apa yang kamu ketahui tentang constructor, user defined constructor, default constructor, parameterized constructor, constructor initialization list, copy constructor dan destructor.
8. Uraikan apa yang kamu ketahui tentang default arguments di C++. Sebutkan apa saja yang dapat digunakan sebagai devalut value. Mengapa nilai constant tidak dapat digunakan sebagai default value untuk reference variable?
9. Apa yang dimaksud dengan function overloading? Kriteria apa yang digunakan untuk menyatakan bahwa dua fungsi dengan nama yang sama adalah berbeda satu sama lain.
10. Banyak penulis buku menyatakan bahwa untuk class X paling sedikit mempunyai satu constructor yaitu default constructor dengan prototype X(). Tetapi John Hubbard dalam bukunya Programming with C++ menyatakan bahwa setiap class X paling sedikit mempunyai dua constructor yaitu default X() dan copy constructor yang prototipe sintaksnya adalah X (const X & ), fungsi anggota dengan satu parameter dan pass by constant reference.
Tugas Anda:
a. Kapan copy constructor dieksekusi?
b. Untuk penggalan kode berikut berapa kali copy constructor dieksekusi?
class Rational {
public : Rational(int n, int d) : num(n), den (d) { }
Rational(const Rational & r) : num(r.num), den(r.den)
{ cout << “COPY CONSTRUCTOR CALLED\n”;}
private: int num, den;
};
Rational f(Rational r) {
Rational s = r;
return s;
}
main() {
Rational(22,7);
Rational y(x);
f(y);
}
JAWAB
1. A. Direct Assignment
2. A. Default Constructor
3. C. Private
4. B. X(const X&)
5. B. Lebih dari satu constructor dan satu destructor
6. Hasil Output :
OBYEK LAHIR
SEKARANG X HIDUP
OBYEK MATI
ANTAR BLOK
OBYEK LAHIR
SEKARANG Y LAHIR
OBYEK MATI
7. -. Constructor adalah sebuah fungsi yang otomatis akan dipanggil setiap kali melakukan pemanggilan terhadap suatu kelas. Constructor digunakan untuk melakukan inisialisasi nilai dari data yang ada di kelas tersebut.
-. Default Constructor adalah constructor yang sudah di inisialisasi tapi dalamnya kosong. Apabila user belum membuat user-defined constructor, maka otomatis program akan menggunakan Default Constructor.
-. User-defined Constructor adalah constructor yang dibuat oleh user sendiri untuk menginisialisasi nilai yang ada di kelas tersebut.
-. Parameterized Constructor adalah constructor yang mempunyai satu parameter atau lebih.
-. Constructor Initialization List adalah sebuah fasilitas yang dapat digunakan oleh user untuk menyederhanakan struktur constructor. Fasilitas ini disediakan oleh C++.
-. Copy Constructor adalah constructor dengan satu parameter dengan tipe yang sama yang ditetapkan untuk setiap anggota variabel class nonstatik objek yang datanya disalin dari objek sebelumnya.
-. Destructor adalah fungsi yang berguna untuk menghancurkan atau membuang sebuah obyek (kelas) dari memori. Nama dari fungsi destructor sama dengan nama kelas, tapi di depannya ditambahkan tanda tilde (~). Fungsi ini dipanggil setiap kali suatu kelas selesai masa berlakunya.
8. -. Default Argument -> Constructor dengan default argument memiliki satu atau lebih parameter yang fungsi constructnya sudah disediakan nilai awal sebagai nilai otomatis yang akan diberikan ketika programmer tidak mencantumkannya.
-. Default Value -> Default Value dapat dipakai untuk semua tipe kecuali nilai const(constant).
-. Nilai Constant tidak dapat digunakan sebagai default value karena nilai constant tidak dapat diubah sama sekali, sedangkan default value digunakan bila user tidak mencantumkannya. Bila programmer ingin memberi nilai maka yang dipakai adalah nilai input bukan nilai default.
9. Overloading Function -> Memperbolehkan fungsi dengan nama yang sama, namun harus memenuhi kriteria tertentu.
Kriteria Overloading Function :
-. Nama Fungsi sama
-. Jumlah parameter
-. Urutan parameter
10. a. Kapan copy constructor dieksekusi?
Ketika fungsi dari copy constructor tersebut dipanggil.
b. Untuk penggalan kode berikut berapa kali copy constructor dieksekusi?
Copy Constructor di kode tersebut dieksekusi sebanyak 4 kali.