Kekaburan dalam Pemula Kelas: Peranan Pendakap dan Setara
Dalam C 11, pemula ahli dalam kelas hanya boleh ditakrifkan menggunakan kerinting pendakap ({}) atau tanda sama dengan (=). Sekatan ini menimbulkan persoalan mengapa kurungan tidak dibenarkan untuk tujuan ini.
Satu sebab utama pengehadan ini terletak pada potensi kekaburan sintaks. Pertimbangkan kelas berikut:
class BadTimes { public: struct Overloaded; int Overloaded; // Data member int confusing(Overloaded); // Function declaration };
Jika kurungan dibenarkan untuk pemula, baris "int confusing(Overloaded);" boleh jadi samar-samar. Ia boleh ditafsirkan sama ada sebagai pengisytiharan fungsi (seperti yang ditunjukkan di atas) atau sebagai permulaan pembolehubah ahli jika kurungan digunakan untuk pemula:
int confusing{Overloaded};
Untuk menghapuskan kekaburan ini, pendakap kerinting atau tanda sama diperlukan . Ini memastikan tiada kekeliruan antara pemula pembolehubah ahli dan pengisytiharan fungsi:
class BadTimes { public: struct Overloaded; int Overloaded; int confusing{Overloaded}; // Member variable initialized with Overloaded };
Atas ialah kandungan terperinci Mengapa C 11 Pemula Dalam Kelas Tidak Membenarkan Tanda Kurung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!