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

Berapa Lama Argumen Fungsi Sementara Hidup dalam C ?

DDD
DDDasal
2024-12-27 07:06:17944semak imbas

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

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

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!

Kenyataan:
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