Rumah > pembangunan bahagian belakang > C++ > Mengapakah `vector v(istream_iterator(cin), istream_iterator());` Mengisytiharkan Fungsi dalam C ?

Mengapakah `vector v(istream_iterator(cin), istream_iterator());` Mengisytiharkan Fungsi dalam C ?

Susan Sarandon
Lepaskan: 2024-12-23 14:54:24
asal
471 orang telah melayarinya

Why Does `vector v(istream_iterator(cin), istream_iterator());` Declare a Function in C  ?

Kes Membingungkan Penghalau Sementara dalam Penghuraian Paling Menjengkelkan

Penghuraian Paling Menjengkelkan, kekaburan penghuraian yang terkenal dalam C , menimbulkan kebingungan soalan: bagaimana baris berikut boleh ditafsirkan sebagai fungsi pengisytiharan?

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

Untuk memahami tingkah laku pelik ini, kita mesti menyelidiki butiran Parse Paling Menjengkelkan. Lelaran sementara kedua sememangnya boleh ditafsirkan sebagai jenis, iaitu fungsi yang menghasilkan lelaran tanpa parameter. Walau bagaimanapun, intinya terletak pada pemahaman tafsiran lelaran sementara pertama.

Berbeza dengan lelaran kedua, lelaran sementara pertama kelihatan mengelirukan dibungkus dalam kurungan dan tidak mempunyai nama parameter yang jelas. Sintaks tidak konvensional ini, warisan C, mencetuskan pertanyaan: apakah jenis yang diwakili oleh iterator ini?

Jawapannya ialah istream_iterator(cin) pada asasnya bersamaan dengan istream_iterator cin. Tanda kurung tidak mempunyai tujuan yang bermakna dan hanya berlebihan. Sintaks yang ingin tahu ini membolehkan anda sewenang-wenangnya melampirkan nama argumen dalam kurungan dalam pengisytiharan fungsi.

Akhirnya, sifat membingungkan kod ini berpunca daripada pergantungan pada sintaks usang ini. Ia mengisytiharkan bahawa parameter pertama ialah istream_iterator bernama cin. Tingkah laku yang tidak dijangka ini menggariskan kelemahan peninggalan sintaksis sedemikian, yang berpotensi membawa kepada kekeliruan dan kesamaran dalam kod.

Atas ialah kandungan terperinci Mengapakah `vector v(istream_iterator(cin), istream_iterator());` Mengisytiharkan Fungsi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan