Rumah > pembangunan bahagian belakang > C++ > Bilakah Objek Sementara C Dimusnahkan?

Bilakah Objek Sementara C Dimusnahkan?

Mary-Kate Olsen
Lepaskan: 2024-12-16 01:53:09
asal
926 orang telah melayarinya

When Are C   Temporary Objects Destroyed?

Dijamin Jangka Hayat Objek Sementara dalam C

Dalam C , pembolehubah sementara dicipta apabila ungkapan menilai kepada nilai yang tidak disimpan dalam pembolehubah bernama. Dalam kod yang diberikan, objek StringBuffer sementara dibuat dalam panggilan fungsi GetString():

StringBuffer(mystring).Size(MAXLEN)
Salin selepas log masuk

Timbul persoalan apabila pemusnah untuk objek sementara ini akan dipanggil:

Hayat Objek Sementara:

C menjamin bahawa jangka hayat objek sementara dilanjutkan sehingga akhir daripada ekspresi penuh di mana ia dicipta. Ungkapan penuh ialah ungkapan paling luar yang bukan sebahagian daripada sebarang ungkapan lain. Dalam kes ini, ungkapan penuh ialah keseluruhan panggilan fungsi GetString():

GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Salin selepas log masuk

Masa Pemusnahan:

Oleh itu, pemusnah untuk objek StringBuffer sementara akan dipanggil selepas fungsi GetString() kembali dan nilainya dinilai. Tingkah laku ini dijamin oleh Standard C dalam 12.2 "Objek sementara."

Kepentingan untuk Templat Ungkapan:

Jaminan seumur hidup ini penting untuk templat ekspresi, yang boleh menyimpan rujukan kepada objek sementara dalam ungkapan. Contohnya, templat ungkapan berikut:

e = a + b * c / d
Salin selepas log masuk

Boleh mengekalkan rujukan kepada objek sementara yang dicipta oleh setiap operan kerana hayat setiap objek sementara dilanjutkan sehingga penghujung keseluruhan ungkapan.

Atas ialah kandungan terperinci Bilakah Objek Sementara C Dimusnahkan?. 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