Rumah > pembangunan bahagian belakang > C++ > Bilakah \'auto\' Menyimpulkan Nilai berbanding Rujukan dalam C 11?

Bilakah \'auto\' Menyimpulkan Nilai berbanding Rujukan dalam C 11?

Patricia Arquette
Lepaskan: 2024-11-03 08:40:03
asal
794 orang telah melayarinya

When Does

Semantik "auto" C 11

Dalam C 11, kata kunci "auto" membenarkan pengkompil secara automatik menyimpulkan jenis a pembolehubah. Memahami peraturan untuk potongan ini adalah penting apabila menentukan sama ada "auto" akan menghasilkan nilai atau jenis rujukan.

Jenis Potongan untuk Nilai dan Rujukan

Yang utama prinsip yang mengawal jenis potongan ialah jenis "auto" ditentukan dengan cara ia diisytiharkan. Contohnya:

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
Salin selepas log masuk

Dalam contoh di atas, "a1" disimpulkan sebagai nilai integer, manakala "a2" disimpulkan sebagai rujukan integer.

Contoh

1. Mengembalikan Rujukan:

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
Salin selepas log masuk

Dalam kes ini, "auto" menyimpulkan jenis rujukan kerana "get_foo()" mengembalikan rujukan const.

2. Penunjuk Statik:

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
Salin selepas log masuk

Di sini, "auto" menyimpulkan jenis nilai kerana "s_foo" ialah penunjuk statik, yang bukan rujukan.

3. Melingkar Atas Bekas Penunjuk:

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
Salin selepas log masuk

Dalam gelung ini, "auto" memastikan bahawa "foo" disimpulkan sebagai penuding dikongsi kepada Foo. Setiap lelaran mencipta salinan nilai penuding.

Kesimpulan

Untuk meringkaskan, peraturan potongan jenis untuk "auto" dalam C 11 adalah mudah. Jika ungkapan permulaan ialah nilai, "auto" menyimpulkan jenis nilai. Jika ungkapan permulaan ialah rujukan, "auto" menyimpulkan jenis rujukan. Memahami peraturan ini adalah penting untuk penggunaan "auto" yang berkesan dan mengelakkan tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Bilakah \'auto\' Menyimpulkan Nilai berbanding Rujukan dalam C 11?. 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