Anomali Permulaan Ahli Data Dalam Kelas: Menyelidiki Piawaian C
Tidak seperti ahli data tempatan yang boleh dimulakan terus dengan () sintaks, ahli data dalam kelas menentang kaedah mudah ini. Keanehan ini telah membingungkan ramai pengaturcara, menimbulkan persoalan tentang rasional asasnya.
Menurut piawai C, pemulaan langsung ahli data kelas menggunakan () adalah dilarang untuk mengelakkan kekaburan penghuraian. Pertimbangkan senario berikut:
class S { public: int i(x); // data member with initializer };
Tanpa sekatan, pengkompil boleh menjadi bingung apabila cuba menentukan sama ada pengisytiharan merujuk kepada ahli data dengan pemula atau pengisytiharan fungsi ahli.
Contohnya:
struct S { int i(j); // member function declaration int j; // data member without an initializer };
Menggunakan peraturan penghuraian sedia ada yang mengutamakan fungsi ahli berbanding ahli data dalam situasi samar-samar boleh membawa kepada tafsiran yang salah. Untuk mengelakkan kekeliruan sedemikian, piawaian C memilih untuk tidak membenarkan pemulaan langsung ahli data kelas.
Walau bagaimanapun, kaedah pemulaan alternatif kekal tersedia, seperti menggunakan sintaks = pemula-klausa:
int s = 3;
Atau senarai pemula yang dibalut dengan pendakap kerinting:
int s{3};
Dengan mematuhi kaedah ini, pengaturcara boleh memulakan ahli data kelas dengan berkesan, walaupun dengan sintaks yang berbeza daripada rakan tempatan mereka.
Atas ialah kandungan terperinci Mengapa Kami Tidak Boleh Menggunakan Tanda Kurung untuk Memulakan Ahli Data Dalam Kelas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!