Ralat Penghuraian yang Membingungkan: Merungkai Teka-teki Tanda Kurung dalam Argumen Pembina
Apabila menemui mesej ralat samar "permintaan untuk 'fungsi1' ahli dalam 'myObj', iaitu jenis bukan kelas 'MyClass ()()'" manakala cuba menyusun atur cara C, pembangun mungkin mendapati diri mereka memikirkan sebab di sebalik ralat penghuraian yang membingungkan ini. Kod sumber yang dipersoalkan mengandungi kelas dengan pembina yang tidak mempunyai sebarang hujah, diisytiharkan menggunakan baris berikut:
MyClass myObj();
Setelah melaksanakan proses penyusunan, ralat yang disebutkan di atas muncul, menunjukkan bahawa fungsi ahli 'function1' tidak boleh boleh diakses melalui objek 'myObj' kerana 'myObj' dianggap sebagai jenis bukan kelas. Untuk menyelesaikan isu ini, kod diubah suai kepada:
MyClass myObj;
Ini menimbulkan persoalan sama ada ketiadaan hujah dalam perisytiharan pembina memerlukan peninggalan kurungan. Walaupun pengisytiharan pembina kosong menggunakan kurungan telah digunakan sebelum ini dalam C , standard bahasa telah mengambil pendirian yang tegas: kesamaran seperti yang terdapat dalam kod yang disediakan diselesaikan secara konsisten memihak kepada pengisytiharan fungsi.
Adalah penting untuk diperhatikan bahawa pemula kurungan kosong dibenarkan dalam senario tertentu, seperti dalam ungkapan baharu atau semasa membina objek sementara yang dimulakan nilai. Walau bagaimanapun, dalam kes pengisytiharan pembina tanpa hujah, piawaian dengan tegas menentukan peninggalan kurungan. Ini memastikan kejelasan dan menghalang kemungkinan kekeliruan yang mungkin timbul daripada kekaburan sintaksis.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Tanda Kurung dalam Perisytiharan Pembina saya Tanpa Argumen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!