Rumah >pembangunan bahagian belakang >C++ >Mengapa MyClass myObj(); membawa kepada kekaburan dalam C ?

Mengapa MyClass myObj(); membawa kepada kekaburan dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-11-14 18:05:02878semak imbas

Why does MyClass myObj(); lead to ambiguity in C  ?

Kekaburan dalam Pengisytiharan Pembina Kosong

Apabila menghadapi pengisytiharan MyClass myObj();, pengkompil menilai kemungkinan sama ada definisi objek dengan pemula kosong atau pengisytiharan fungsi. Walau bagaimanapun, menurut piawaian bahasa C, kekaburan ini diselesaikan secara konsisten memihak kepada pengisytiharan fungsi.

Penggunaan tanda kurung kosong dalam pengisytiharan pembina hanya dibenarkan dalam konteks tertentu, seperti dalam ungkapan baharu atau apabila membina objek sementara yang dimulakan nilai.

Dalam kes yang diterangkan dalam soalan asal, sintaks yang betul untuk mengisytiharkan objek tanpa sebarang argumen ialah MyClass myObj;, kerana kurungan telah salah dikaitkan dengan perisytiharan pembina dan bukan sebagai pemula kosong. Ini berkemungkinan membawa kepada ralat penghuraian dalam sesetengah penyusun.

Adalah penting untuk ambil perhatian bahawa tingkah laku ini ditentukan oleh standard bahasa C dan bukan pengehadan pengkompil khusus yang digunakan. Oleh itu, adalah amalan yang baik untuk mengikut sintaks yang betul untuk mengelakkan kekeliruan dan memastikan keserasian dengan persekitaran kompilasi yang berbeza.

Atas ialah kandungan terperinci Mengapa MyClass myObj(); membawa kepada kekaburan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn