NAMA : Riyn Winesdyo W.
NIM : 1701292866
KELAS: 02PPT
TM 02
1. 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
2. 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
3. Level akses utility function atau helper function suatu klas adalah
a. public
b. protected
c. private
d. inline
4. 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
a. satu konstruktor dan satu destructor
b. lebih dari satu konstruktor dan satu destructor
c. satu konstruktor dan lebih dari satu destructor
d. 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”;
}
}
hasil:
OBYEK LAHIR
SEKARANG x HIDUP
OBYEK MATI
ANTAR BLOK
OBYEK LAHIR
SEKARANG y HIDUP
OBYEK MATI
7. Uraikan apa yang kamu ketahui tentang constructor, user defined constructor, default constructor, parameterized constructor, constructor initialization list, copy constructor dan destructor.
• Constructor adalah method khusus yang mendeskripsikan bagaimana instance of class(object) dibuat. Constructor juga digunakan untuk menginisialisasi nilai dari object yang baru dibuat. (className();)
Constructor memiliki ciri-ciri menggunakan nama yang sama dengan nama class-nya serta tidak memiliki return type.
• User defined constructor dibagi menjadi 2 yaitu re-define default constructor, merupakan constructor yang secara eksplisit memiliki nama yang sama dengan class-nya tetapi memiliki isi yang didefinisikan sendiri oleh user. Constructor ini tidak punya parameter; Overloading constructor, merupakan constructor yang memiliki beberapa parameter. Perilakunya sama seperti function overload.
• Default constructor merupakan constructor yang secara otomatis dibuat oleh compiler saat compile time jika user tidak mendeklarasikan constructor dan tidak mempunyai parameter.
• Parameterized constructor adalah constructor yang dideklarasikan dengan parameter.
• Constructor initialization list digunakan untuk menginisialisasi beberapa member sekaligus. Nama anggota yang diinisialisasi dituliskan setelah parameter formal constructor dan setiap nama anggota diikuti oleh sejumlah argument yang sesua dengan user-defined constructor yang ada.
• Copy constructor merupakan constructor khusus yang digunakan untuk duplikasi isi dasi suatu object ke dalam object baru yang sedang diciptakan. Copy constructor secara otomatis dipanggil ketika deklarasi inisialisasi object diduplikasi, object passed by value ke function, dan object returned by value dari function. (className (const className&);)
• Destructor merupakan function yang terakhir kali dijalankan sebelum siklus hidup object berakhir. Tugasnya untuk deinisialisasi, clean up, dealokasi memory, dll. Nama destructor sama dengan nama class-nya dengan penambahan tanda ~ (tilde) di depan namanya. (~className();)
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?
Suatu nilai tertentu yang akan dipakai sebagai argumen bila fungsi tidak dipanggil dengan argumen lengkap. Default values bisa berupa nilai konstan, variabel global, atau function calls.
Nilai constant tidak dapat digunakan sebagai default value untuk reference variable karena reference variable berupa pointer yang menunjuk alamat dari variabel tertentu.
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.
Function overloading berarti terdapat dua atau lebih fungsi dengan penggunaan nama yang sama.
Kriteria yang digunakan untuk menyatakan dua fungsi dengan nama yang sama adalah berbeda bisa dilihat dari return type-nya serta parameternya. Dua fungsi dengan nama sama akan dikatakan berbeda jika return type-nya berbeda. Sedangkan dua fungsi dengan nama sama tidak bisa dikatakan overloaded ketika jumlah parameter kedua fungsi tersebut berbeda, tipe data yang digunakan parameter kedua fungsi berbeda, serta perbedaan urutan parameter.
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?
Copy constructor dieksekusi ketika:
– An object is copied by means of a declaration initialization
– An object is passed by value to a function
– An object is returned by value from function
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);
}
Copy constructor dieksekusi sebanyak 3 kali di dalam main
I AM PROUD AS A BINUSIAN