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