Dalam C++, penutupan ialah ungkapan lambda yang boleh mengakses pembolehubah luaran. Untuk membuat penutupan, tangkap pembolehubah luar dalam ungkapan lambda. Penutupan memberikan kelebihan seperti kebolehgunaan semula, penyembunyian maklumat dan penilaian malas. Ia berguna dalam situasi dunia sebenar seperti pengendali acara, di mana penutupan masih boleh mengakses pembolehubah luar walaupun ia dimusnahkan.
Penutupan dalam Ungkapan Lambda C++
Dalam C++, penutupan ialah ungkapan lambda yang boleh mengakses pembolehubah di luar skop pengisytiharannya. Dalam erti kata lain, penutupan ialah fungsi yang mengandungi petikan pembolehubah tertentu.
Cara Membuat Penutupan
Untuk membuat penutupan, gunakan ungkapan lambda dan tangkap pembolehubah sekeliling untuk diakses.
int outerVar = 10; auto lambda = [outerVar](int x) { return x + outerVar; };
Dalam contoh di atas, pembolehubah outerVar
ditangkap oleh ungkapan lambda. Ini bermakna walaupun lambda
meninggalkan skop pengisytiharannya, ia masih boleh mengakses nilai outerVar
. outerVar
。这意味着即使 lambda
离开其声明作用域,它仍然可以访问 outerVar
的值。
闭包的优势
闭包提供了以下优势:
实战案例:事件处理程序
在 GUI 编程中,经常使用闭包来实现事件处理程序。例如,以下 lambda表达式创建了一个单击事件处理程序,该处理程序打印捕获的按钮ID:
QPushButton* button = new QPushButton("Button"); button->clicked.connect([id = button->objectName()](bool) { qDebug() << "Clicked button: " << id; });
即使在 button
Kelebihan Penutupan
Penutupan memberikan kelebihan berikut:Atas ialah kandungan terperinci Apakah maksud penutupan dalam ungkapan lambda C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!