Rumah > pembangunan bahagian belakang > C++ > Berapa Lama Argumen Fungsi Sementara Hidup dalam C ?

Berapa Lama Argumen Fungsi Sementara Hidup dalam C ?

DDD
Lepaskan: 2024-12-27 07:06:17
asal
940 orang telah melayarinya

How Long Do Temporary Function Arguments Live in C  ?

Memahami Jangka Hayat Argumen Fungsi Sementara

Apabila menggunakan objek sementara yang dijadikan sebagai argumen fungsi, seperti yang ditunjukkan di bawah:

class MyClass
{
  MyClass(int a);
};

myFunction(MyClass(42));
Salin selepas log masuk

Adalah penting untuk memahami tingkah laku pemusnahan mereka. Piawaian C memberikan cerapan tentang masa pemusnahnya.

Masa Pemusnahan Argumen Sementara

Objek sementara menemui penghujungnya pada akhir ungkapan lengkap yang didiaminya. Ungkapan lengkap menunjukkan ungkapan yang berdiri sendiri, tidak bersarang dalam yang lain. Biasanya, ini sepadan dengan koma bertitik (atau kurungan penutup untuk pernyataan bersyarat, gelung dan suis) yang menetapkan penyiapan pernyataan. Dalam contoh yang diberikan, ungkapan lengkap ditamatkan dengan panggilan fungsi.

Memanjangkan Jangka Hayat Sementara

Perlu diperhatikan bahawa jangka hayat sementara boleh dilanjutkan dengan merujuknya sebagai rujukan berterusan. Strategi ini memanjangkan jangka hayat mereka agar sepadan dengan rujukan:

MyClass getMyClass();

{
  const MyClass& r = getMyClass(); // full expression ends here
  ...
} // object returned by getMyClass() is destroyed here
Salin selepas log masuk

Menggunakan teknik ini boleh mengoptimumkan prestasi dengan mengelakkan seruan pembina salinan yang tidak perlu berbanding dengan menggunakan MyClass obj = getMyClass();. Walau bagaimanapun, kelazimannya agak rendah.

Atas ialah kandungan terperinci Berapa Lama Argumen Fungsi Sementara Hidup 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan