Memahami Permulaan Ahli dalam Kelas
Dalam C , apabila membuat kelas, ahli boleh dimulakan secara eksplisit atau tersirat. Jika tidak dimulakan secara eksplisit, tingkah laku bergantung pada jenis ahli.
Pemulaan Pembolehubah Ahli
-
Jenis Primitif: Jenis Primitif (cth., int, penunjuk) tidak dimulakan secara lalai. Ia mengandungi nilai arbitrari yang terdapat dalam ingatan apabila diisytiharkan.
-
Objek: Objek kelas dimulakan dengan memanggil pembina lalai mereka. Jika tiada pembina lalai yang ditentukan, anda mesti memulakannya secara eksplisit.
-
Rujukan: Rujukan mesti sentiasa dimulakan kepada rujukan sedia ada; jika tidak, pengkompil akan membuang ralat.
Permulaan Ahli dalam Contoh
Pertimbangkan kelas berikut:
class Example {
private:
int *ptr;
string name;
string *pname;
string &rname;
const string &crname;
int age;
public:
Example() {}
};
Salin selepas log masuk
Jika instance kelas ini (Contoh ex) dicipta tanpa permulaan yang jelas, ahli dimulakan sebagai berikut:
-
ptr: Mengandungi sampah
-
nama: Rentetan kosong
-
pname: Mengandungi sampah
-
nama: Ralat penyusunan (rujukan mesti dimulakan)
-
crname: Ralat penyusunan (rujukan const mesti dimulakan)
-
umur: Mengandungi sampah
Implikasi untuk Amalan Terbaik
Memahami permulaan ahli adalah penting untuk menulis atur cara tanpa ralat. Untuk memastikan tingkah laku yang betul:
- Memulakan jenis dan penunjuk primitif secara eksplisit untuk mengelakkan nilai yang tidak dijangka.
- Pastikan rujukan dimulakan kepada rujukan yang sah atau dilemparkan ralat.
- Tentukan pembina lalai atau mulakan objek secara eksplisit untuk mengelakkan tidak ditentukan tingkah laku.
Atas ialah kandungan terperinci Bagaimanakah Ahli Kelas Dimulakan dalam C , dan Apakah Amalan Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!