Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah \'auto\' Menentukan Nilai berbanding Jenis Rujukan dalam C 11?

Bagaimanakah \'auto\' Menentukan Nilai berbanding Jenis Rujukan dalam C 11?

Susan Sarandon
Lepaskan: 2024-11-04 07:53:31
asal
221 orang telah melayarinya

How Does

Jenis Deduksi Semantik "auto" dalam C 11

Dalam C 11, kata kunci "auto" menyimpulkan jenis pembolehubah daripada jenis pemulanya. Walau bagaimanapun, menentukan sama ada "auto" menyelesaikan kepada nilai atau rujukan kadangkala boleh menjadi samar-samar.

Nilai lwn. Rujukan

Peraturan utama untuk potongan jenis dengan "auto " ialah jenis yang disimpulkan adalah bersamaan dengan jenis yang diisytiharkan.

  • Jika jenis yang diisytiharkan ialah jenis nilai, "auto" akan menyelesaikan kepada nilai.
  • Jika jenis yang diisytiharkan ialah jenis rujukan, "auto" akan menyelesaikan kepada rujukan.

Contoh

  • auto i = v.begin(); - Memandangkan v.begin() mengembalikan iterator mengikut nilai, "auto" menyelesaikan kepada nilai.
  • const std::shared_ptr& get_foo(); - Jenis fungsi ialah rujukan, jadi "auto" akan menyelesaikan kepada rujukan.
  • statik std::shared_ptr s_foo; - Jenis pembolehubah ialah penunjuk, jadi "auto" akan menyelesaikan kepada nilai.
  • std::vector> c; - Jenis bekas ialah vektor penunjuk, jadi "auto" akan menyelesaikan kepada nilai.

Type Deduction

Contoh berikut menunjukkan kelakuan potongan jenis:

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

Dalam contoh ini, "a1" adalah jenis int (nilai), manakala "a2" adalah jenis int& (rujukan).

Kesimpulan

Memahami jenis semantik potongan "auto" adalah penting untuk menulis kod C yang betul dan cekap. Dengan mematuhi peraturan "auto" menyelesaikan kepada jenis yang diisytiharkan, pembangun boleh membuat kesimpulan dengan tepat jenis pembolehubah dan memanfaatkan faedah ciri ini.

Atas ialah kandungan terperinci Bagaimanakah \'auto\' Menentukan Nilai berbanding Jenis 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