Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah `istream_iterator(cin)` Boleh Ditafsirkan sebagai Jenis dalam 'Paling Menjengkelkan'?

Bagaimanakah `istream_iterator(cin)` Boleh Ditafsirkan sebagai Jenis dalam 'Paling Menjengkelkan'?

Mary-Kate Olsen
Lepaskan: 2024-12-17 01:51:24
asal
909 orang telah melayarinya

How Can `istream_iterator(cin)` Be Interpreted as a Type in the

Kekaburan Kurungan dalam Perisytiharan Fungsi

Dalam fenomena "Most Vexing Parse", kesamaran timbul apabila menggunakan templat. Satu contoh sedemikian berlaku apabila menghurai pengisytiharan fungsi. Pertimbangkan baris berikut:

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

Baris ini boleh ditafsirkan sebagai sama ada pengisytiharan fungsi atau pengisytiharan pembolehubah. Persoalannya, bagaimanakah lelaran sementara pertama boleh ditafsirkan sebagai jenis?

Bertentangan dengan gerak hati, istream_iterator(cin) bukan pengisytiharan fungsi. Sebaliknya, ia adalah ungkapan yang mencipta contoh sementara istream_iterator dimulakan dengan aliran input cin. Tanda kurung yang berlebihan di sekeliling cin tidak mengubah tafsiran ini.

Sintaks pelik ini diwarisi daripada C, di mana tanda kurungan sedemikian juga dianggap sebagai satu kesilapan. Dalam kes ini, kurungan tidak menjejaskan makna ungkapan. Ia hanya berfungsi sebagai bunyi yang tidak perlu, yang membawa kepada kekeliruan.

Kesimpulannya, lelaran sementara pertama dalam baris yang diberikan mewakili jenis istream_iterator, dan tanda kurungan di sekeliling cin adalah berlebihan. Walau bagaimanapun, sintaks yang samar-samar ini harus digunakan dengan berhati-hati untuk mengelakkan kemungkinan salah faham.

Atas ialah kandungan terperinci Bagaimanakah `istream_iterator(cin)` Boleh Ditafsirkan sebagai Jenis dalam '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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan