Pemusnahan Objek Sementara dalam C
Kod yang disediakan menunjukkan tingkah laku yang mengejutkan apabila objek sementara dimusnahkan dalam susunan yang tidak dijangka. Walau bagaimanapun, tingkah laku ini sebenarnya dijamin oleh piawai C.
Penjelasan
Objek sementara, yang juga dikenali sebagai objek tanpa nama, dicipta apabila ungkapan menilai kepada jenis kelas yang bukan jenis rujukan. Ia biasanya digunakan untuk menyimpan hasil perantaraan semasa penilaian ungkapan.
Dalam kod yang diberikan, objek sementara jenis Foo dicipta daripada rentetan aksara literal dan pemusnahnya digunakan apabila hayat objek itu tamat. Pemusnah mencetak nama yang disimpan dalam ahli m_name objek.
Hayat objek sementara berakhir pada penghujung ungkapan penuh yang ia dicipta. Dalam kod yang disediakan, ungkapan penuh ialah pernyataan:
Foo{ "one" };
Oleh itu, jangka hayat objek sementara berakhir pada koma bernoktah berikutan pernyataan ini. Akibatnya, pemusnah objek sementara digunakan dan rentetan "satu" dicetak.
Pengecualian kepada Peraturan
Sementara peraturan am menentukan bahawa objek sementara dimusnahkan pada akhir ungkapan penuh, terdapat beberapa pengecualian yang dinyatakan dalam piawaian C ([class.temporary] p5-p7):
Pengecualian ini membolehkan lebih fleksibiliti dalam mengurus jangka hayat objek sementara dalam situasi tertentu.
Atas ialah kandungan terperinci Mengapa Objek Sementara Dimusnahkan dalam Susunan Mengejutkan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!