TM 02
Tifany inne – 1701295104
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”;
}
}
Jawab:
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.
Jawab:
a. Constructor: adalah metode khusus yang mengatur bagaimana menginisialisasi suatu objek di class secara otomatis.
b. User defined constructor: konstruktor yang di buat oleh pengguna. Karena ada konstruktor default, maka dilakukan overloading function.
c. default constructor: konstruktor yang secara otomatis dibuat saat class dibentuk secara implisit(tidak terlihat).
d. parameterized constructor: konstruktor yang mengambil parameter tertentu yang ditentukan oleh pengguna.
e. constructor initialization list: kumpulan konstruktor yang bukan default.
f. copy constructor: saat constructor dibuat, ada copy constructor yang dibuat secara otomatis pula.
g. destructor: kebalikannya konstruktor, sebuah metode untuk menghancurkan class setelah selesai digunakan untuk membebaskan memori.
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?
Jawab:
default arguments adalah argumen di suatu fungsi yang tidak harus di spesifikasi oleh pengguna karena telah ada default valuenya. Default value bisa saja const, variable, atau pointer. Nilai constant tidak dapat di gunakan sebagai default value di reference variable karena const tidak bisa diubah isinya dan sebuah const variable tidak bisa dikembalikan sebagai non-const 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.
Jawab:
Function overloading adalah lebih dari satu fungsi yang mempunyai nama yang sama tetapi dibedakan oleh programnya. Kriteria yang digunakan untuk menyatakan dua fungsi dengan nama sama berbeda adalah jumlah parameter, urutan parameter dipanggil, dan jenis parameternya.
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:
a. copy constructor dieksekusi saat objek di kopi di iniliasisasi deklarasi, saat value objek dikirim ke suatu fungsi dan saat value objek dikembalikan dari suatu fungsi.
b. 4 kali
I AM PROUD AS A BINUSIAN