Rumah > pembangunan bahagian belakang > C++ > Mengapa Senarai Pemula Tidak Boleh Digunakan Terus di Sebelah Kanan Operator C?

Mengapa Senarai Pemula Tidak Boleh Digunakan Terus di Sebelah Kanan Operator C?

Patricia Arquette
Lepaskan: 2024-12-23 11:14:14
asal
354 orang telah melayarinya

Why Can't Initializer Lists Be Directly Used on the Right-Hand Side of C   Operators?

Senarai Pemula dan Bahagian Kanan Operator

Senarai pemula ialah cara mudah untuk memulakan pembolehubah dan objek, tetapi penggunaannya adalah terhad di sebelah kanan pengendali. Ini boleh membingungkan, kerana nampaknya logik untuk membenarkan senarai pemula dalam konteks sedemikian.

Sebab Sekatan

Menurut piawaian C, senarai pemula tidak dipertimbangkan ungkapan. Oleh kerana hujah kepada pengendali biasanya memerlukan ungkapan, senarai pemula tulen adalah dilarang.

Pengecualian

Terdapat beberapa pengecualian yang membenarkan senarai pemula digunakan:

  • Sebagai hujah kepada fungsi
  • Dalam subskrip ungkapan
  • Di sebelah kanan tugasan

Rasional

Jawatankuasa standard C 11 memutuskan untuk tidak membenarkan senarai pemula pada sebelah kiri operator untuk memudahkan pelaksanaan parser. Membenarkan mereka di sebelah kanan akan menjadi terlalu tidak konsisten tanpa membenarkan mereka di sebelah kiri.

Alternatif

Nasib baik, terdapat alternatif untuk menggunakan senarai pemula di sebelah kanan pengendali. Satu pilihan ialah membungkus senarai pemula dalam kurungan, yang mengubahnya menjadi ungkapan rujukan nilai:

baz << (std::initializer_list<int>{1, -2, "foo", 4, 5});
Salin selepas log masuk

Pilihan lain ialah mencipta pembolehubah sementara jenis yang sesuai dan memulakannya dengan senarai pemula:

auto data = bar{1, -2, "foo", 4, 5};
baz << data;
Salin selepas log masuk

Walaupun alternatif ini mungkin tidak semudah menggunakan senarai pemula secara langsung, ia menyediakan penyelesaian untuk sekatan pada sebelah kanan pengendali.

Atas ialah kandungan terperinci Mengapa Senarai Pemula Tidak Boleh Digunakan Terus di Sebelah Kanan Operator C?. 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