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

Bilakah Objek Sementara Dimusnahkan dalam C?

Barbara Streisand
Lepaskan: 2024-11-12 17:34:02
asal
320 orang telah melayarinya

When are Temporary Objects Destroyed in C  ?

Pemusnahan Objek Sementara dalam C

Dalam C , objek sementara dicipta atas permintaan semasa penilaian ungkapan. Objek ini wujud hanya dalam skop ungkapan dan dimusnahkan secara automatik selepas ia berakhir.

Pertimbangkan contoh berikut dengan tiga baris kod:

Foo foo{"three"};
Foo{"one"};
std::cout << "two" << '\n';
Salin selepas log masuk

Kod mencetak "satu," " dua," dan "tiga" dalam susunan itu. Tingkah laku ini timbul daripada peraturan berikut yang mengawal pemusnahan objek sementara:

Kemusnahan di Akhir Penilaian Ungkapan

Objek sementara dimusnahkan setelah selesai menilai ungkapan penuh di mana mereka dicipta. Dalam contoh ini, objek sementara untuk "satu" dan "tiga" dimusnahkan selepas barisan masing-masing berada di dalamnya.

Pengecualian kepada Peraturan

Sementara objek sementara pemusnahan biasanya mengikut peraturan ini, pengecualian khusus wujud, seperti yang digariskan dalam [class.temporary] p4-p7:

  1. Dipendekkan hayat objek sementara binaan lalai dalam pemula tatasusunan.
  2. Dipendekkan seumur hidup hujah pembina lalai semasa penyalinan tatasusunan.
  3. Melanjutkan hayat objek sementara dengan mengikat rujukan kepadanya.
  4. Melanjutkan hayat objek sementara dalam pemula-julat.

Dalam contoh yang disediakan, tiada satu pun daripada pengecualian ini terpakai, jadi objek sementara dimusnahkan selepas garisan masing-masing, menghasilkan output yang ditentukan.

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