Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Rujukan Const pada Tindanan Memanjangkan Jangka Hayat Objek Sementara dalam C?

Bagaimanakah Rujukan Const pada Tindanan Memanjangkan Jangka Hayat Objek Sementara dalam C?

Patricia Arquette
Lepaskan: 2024-10-26 19:11:02
asal
1063 orang telah melayarinya

How Do Const References on the Stack Extend the Lifetime of Temporary Objects in C  ?

Mengikat Objek Sementara pada Rujukan Const

Dalam C , mengikat objek sementara kepada rujukan kepada const pada tindanan memanjangkan hayatnya kepada itu daripada rujukan itu sendiri. Pengecualian kepada peraturan bahawa objek sementara biasanya tamat tempoh pada penghujung ungkapan yang disertakan membolehkan lebih fleksibiliti dan keselamatan dalam menangani objek sementara.

Pertimbangkan kod berikut:

<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

Di sini , objek rentetan sementara dikembalikan daripada fungsi foo(). Biasanya, sementara ini tidak lagi wujud pada penghujung ungkapan penuh yang melibatkan foo(). Walau bagaimanapun, dengan mengikatnya pada val rujukan malar, hayat rentetan sementara dipanjangkan sehingga pendakap kerinting penutup.

Sisihan daripada peraturan seumur hidup sementara yang biasa ini membolehkan kod yang lebih selamat yang mengelakkan rujukan berjuntai. Dalam contoh di atas, rentetan sementara yang terikat pada val dijamin wujud selagi val wujud.

Perhatikan bahawa sifat ini hanya digunakan pada rujukan kepada const pada tindanan. Ia tidak memanjangkan hayat objek sementara yang dirujuk oleh pembolehubah ahli objek.

Untuk pemahaman yang lebih mendalam, rujuk Herb Sutter's GotW #88: Calon Untuk "Konst Paling Penting" tersedia di sini: https://www.gotw.ca/publications/mill19.htm.

Atas ialah kandungan terperinci Bagaimanakah Rujukan Const pada Tindanan 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