Rumah > pembangunan bahagian belakang > C++ > Apakah Masalahnya dengan Mengkurung Nama Hujah dalam Parse Paling Menjengkelkan?

Apakah Masalahnya dengan Mengkurung Nama Hujah dalam Parse Paling Menjengkelkan?

DDD
Lepaskan: 2024-12-14 19:10:12
asal
845 orang telah melayarinya

What's the Deal with Parenthesizing Argument Names in the Most Vexing Parse?

Memahami Kekaburan dalam Parse Paling Menjengkelkan: Mengkurung Nama Argumen

Menghuraikan Paling Menjengkelkan merujuk kepada kekaburan tatabahasa dalam C yang boleh membawa kepada hasil yang tidak dijangka apabila mengisytiharkan fungsi . Satu perincian mengelirukan yang timbul ialah keupayaan untuk menghuraikan baris tertentu sebagai pengisytiharan fungsi, walaupun apabila ia kelihatan tidak mematuhi sintaks yang dijangkakan.

Pertimbangkan baris berikut:

vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Salin selepas log masuk

Baris ini boleh ditafsirkan sebagai pengisytiharan fungsi kerana Parse Paling Menjengkelkan. Lelaran sementara pertama, istream_iterator(cin), dihuraikan sebagai jenis, manakala lelaran sementara kedua, istream_iterator(), ditafsirkan sebagai fungsi mengembalikan lelaran tanpa argumen.

Walau bagaimanapun, ia tidak segera jelas jenis yang diwakili oleh lelaran sementara pertama. Kunci untuk memahami perkara ini ialah menyedari bahawa istream_iterator(cin) adalah bersamaan dengan istream_iterator cin. Tanda kurung adalah berlebihan dan tidak menjejaskan makna ungkapan. Ini bermakna bahawa lelaran sementara yang pertama ialah istream_iterator jenis int bernama cin.

Ini menimbulkan persoalan sama ada nama argumen boleh dikurung sewenang-wenangnya dalam panggilan fungsi. Jawapannya ya, anda boleh kurungkan nama hujah jika anda ingin menyerlahkannya atau menjelaskan tujuannya. Walau bagaimanapun, ia biasanya tidak digalakkan kerana ia boleh membawa kepada kod yang mengelirukan atau tidak dijangka. Tujuan utama sintaks ini adalah untuk menyokong sintaks warisan yang diwarisi daripada C dan tidak dianggap sebagai amalan terbaik dalam kod C moden.

Atas ialah kandungan terperinci Apakah Masalahnya dengan Mengkurung Nama Hujah dalam Parse Paling Menjengkelkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan