Mengapa Sintaks Permulaan Langsung Ahli Data Kelas Dilarang
Dalam C , ahli data kelas tidak boleh dimulakan menggunakan ( ) sintaks yang disertakan dengan pendakap. Pertimbangkan kod berikut:
class test { public: void fun() { int a(3); std::cout << a << '\n'; } private: int s(3); // Compiler error };
Kompilasi gagal dengan ralat seperti:
Jadi, mengapa had ini?
Menurut cadangan awal C dan perbincangan standard, larangan itu bertujuan mencegah kekaburan penghuraian . Jika pengamulaan yang disertakan dengan pendakap dibenarkan, pengkompil berpotensi menyalahtafsirkan pengisytiharan dalam situasi seperti:
struct S { int i(x); // data member with initializer // Other code static int x; };
Di sini, tidak jelas sama ada i(x) ialah pemula ahli data atau pengisytiharan fungsi ahli, kerana kedua-duanya mengikuti sintaks yang sama.
Untuk menangani kekaburan ini, C memilih sekatan berikut:
Keputusan ini mengelakkan isu penghuraian dan memastikan kejelasan dalam kod.
Atas ialah kandungan terperinci Mengapakah Ahli Data Kelas Tidak Boleh Dimulakan Menggunakan Sintaks Terlampir Dakap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!