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>
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!