Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `istream_iterator(cin)` Boleh Ditafsirkan sebagai Jenis dalam 'Paling Menjengkelkan'?
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>());
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
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
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!