Sintaksis:
class Sample
{
public:
int Sam_x;
int Sam_y;
Sample(): Sam_x(1), Sam_y(2) /* Classname: Initialization List */
{
// Constructor body
}
};
Perlu daftar Inisialisasi:
class Sample
{
public:
int Sam_x;
int Sam_y;
Sample() */* Object and variables are created - i.e.:declaration of variables */*
{ // Constructor body starts
Sam_x = 1; */* Defining a value to the variable */*
Sam_y = 2;
} // Constructor body ends
};
dalam program di atas, Ketika konstruktor kelas dieksekusi, Sam_x dan Sam_y dibuat. Kemudian dalam tubuh konstruktor, variabel data anggota tersebut didefinisikan.
Gunakan kasing:
- Variabel Const dan Reference dalam suatu Kelas
Dalam C, variabel harus didefinisikan selama pembuatan. dengan cara yang sama di C ++, kita harus menginisialisasi variabel Const dan Reference selama pembuatan objek dengan menggunakan daftar Inisialisasi. jika kita melakukan inisialisasi setelah pembuatan objek (Inside constructor body), kita akan mendapatkan kesalahan waktu kompilasi.
Objek anggota kelas Sample1 (base) yang tidak memiliki konstruktor default
class Sample1
{
int i;
public:
Sample1 (int temp)
{
i = temp;
}
};
// Class Sample2 contains object of Sample1
class Sample2
{
Sample1 a;
public:
Sample2 (int x): a(x) /* Initializer list must be used */
{
}
};
Saat membuat objek untuk kelas turunan yang secara internal akan memanggil konstruktor kelas turunan dan memanggil konstruktor kelas dasar (default). jika kelas dasar tidak memiliki konstruktor default, pengguna akan mendapatkan kesalahan waktu kompilasi. Untuk menghindari, kita harus memiliki keduanya
1. Default constructor of Sample1 class
2. Initialization list in Sample2 class which will call the parametric constructor of Sample1 class (as per above program)
Nama parameter konstruktor kelas dan anggota data Kelas sama:
class Sample3 {
int i; /* Member variable name : i */
public:
Sample3 (int i) /* Local variable name : i */
{
i = i;
print(i); /* Local variable: Prints the correct value which we passed in constructor */
}
int getI() const
{
print(i); /*global variable: Garbage value is assigned to i. the expected value should be which we passed in constructor*/
return i;
}
};
Seperti kita ketahui bersama, variabel lokal memiliki prioritas tertinggi daripada variabel global jika kedua variabel tersebut memiliki nama yang sama. Dalam hal ini, program mempertimbangkan nilai "i" {variabel kiri dan kanan. yaitu: i = i} sebagai variabel lokal di konstruktor Sample3 () dan variabel anggota Kelas (i) ditimpa. Untuk menghindari, kita harus menggunakan keduanya
1. Initialization list
2. this operator.