Mengapa Sintaks Permulaan Langsung Dilarang untuk Ahli Data Kelas
Ahli data kelas C tidak boleh dimulakan menggunakan sintaks permulaan langsung (ungkapan- senarai) disebabkan kesamaran penghuraian yang berpotensi. Ini jelas dalam contoh yang disediakan:
class test { private: int s(3); // Compiler error };
Pengkompil menimbulkan ralat:
Menurut Piawaian C, data ahli hanya boleh dimulakan menggunakan sintaks berikut:
Sebab untuk Sekatan
Sintaks pemulaan langsung sengaja ditinggalkan untuk ahli data kelas bagi mengelakkan kekaburan. Menghuraikan pengisytiharan berikut mungkin mencabar:
struct S { int i(x); // data member with initializer? static int x; }; struct T { int i(x); // member function declaration? typedef int x; };
Jika sintaks pemulaan langsung dibenarkan, adalah tidak jelas sama ada int i(x) mewakili ahli data dengan pemula atau pengisytiharan fungsi ahli. Kekaburan ini juga akan menjejaskan templat.
Untuk menyelesaikan masalah penghuraian ini, Jawatankuasa Piawaian C memutuskan untuk melarang sintaks permulaan langsung untuk ahli data kelas dan menyimpannya untuk pengisytiharan fungsi dan pembolehubah setempat.
Atas ialah kandungan terperinci Mengapakah Sintaks Permulaan Langsung Dilarang untuk Ahli Data Kelas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!