Mengapa Rujukan Const Memanjangkan Jangka Hayat Objek Sementara dalam C ?

Linda Hamilton
Lepaskan: 2024-10-26 16:04:03
asal
872 orang telah melayarinya

Why Do Const References Extend the Lifetime of Temporary Objects in C  ?

Memahami Temporary Object Lifetime dengan Const Rujukan

Pengenalan:

Dalam C , the lifetime objek sementara lazimnya dilanjutkan hanya sehingga akhir ungkapan di mana ia dicipta. Walau bagaimanapun, pengecualian timbul apabila objek sementara terikat kepada rujukan const, memanjangkan jangka hayatnya melebihi skop asal.

Siasatan Khusus:

Mengapa kod berikut menyusun dan laksanakan dengan jayanya, walaupun rentetan yang dikembalikan daripada fungsi foo ialah objek sementara?

<code class="cpp">string foo() {
  return string("123");
}

int main() {
  const string& val = foo();
  printf("%s\n", val.c_str());
  return 0;
}</code>
Salin selepas log masuk

Jawapan:

Piawaian C secara jelas mentakrifkan bahawa mengikat objek sementara kepada rujukan kepada const pada tindanan memanjangkan hayat sementara sehingga hayat rujukan itu sendiri. Oleh itu, dalam kod yang disediakan, rentetan sementara yang dikembalikan oleh foo() kekal hidup sehingga pendakap penutup fungsi utama.

Mekanisme:

Ciri ini memastikan bahawa rujukan kepada objek sementara tidak menjadi rujukan berjuntai, yang akan mengakibatkan tingkah laku yang tidak ditentukan. Walaupun objek sementara terikat pada rujukan const, memorinya disematkan dengan berkesan, membolehkan atur cara terus menggunakannya dengan selamat.

Penghadan:

Adalah penting untuk ambil perhatian bahawa sambungan seumur hidup ini hanya digunakan pada rujukan berasaskan tindanan. Sebaliknya, rujukan yang merupakan ahli objek tidak memanjangkan hayat objek sementara.

Maklumat Tambahan:

Untuk perbincangan yang lebih terperinci mengenai topik ini, rujuk GotW #88: Calon Untuk "Konst Paling Penting" oleh Herb Sutter.

Atas ialah kandungan terperinci Mengapa Rujukan Const Memanjangkan Jangka Hayat Objek Sementara dalam 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!