Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah pembolehubah statik dalam fungsi ahli berkelakuan merentas keadaan kelas yang berbeza?
Pertimbangkan kelas berikut:
class A { void foo() { static int i; i++; } };
Apabila berurusan dengan pembolehubah statik dalam fungsi ahli dalam C , ia adalah penting untuk memahami cara mereka berkelakuan merentas kejadian.
Berbilang Instans dan Pembolehubah Statik
Bertentangan dengan andaian bahawa setiap kejadian akan memiliki salinan pembolehubah statiknya sendiri, dalam senario khusus ini, hanya akan terdapat satu salinan int i statik dalam keseluruhan program. Ini kerana kelas A ialah kelas bukan templat dan A::foo() ialah fungsi bukan templat.
Kesan Contoh pada Pembolehubah Statik
Tidak kira yang mana contoh A menggunakan kaedah foo(), pembolehubah statik yang dikongsi i akan terjejas. Sebagai contoh, jika anda mengisytiharkan berbilang kejadian A seperti ini:
A o1, o2, o3;
Memanggil foo() pada mana-mana kejadian ini akan meningkatkan pembolehubah i:
o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3 o1.foo(); // i = 4
Sebagai kesimpulan, statik pembolehubah dalam fungsi ahli dikongsi merentas semua kejadian kelas, membenarkan mana-mana tika mengakses dan mengubah suai nilai yang sama.
Atas ialah kandungan terperinci Bagaimanakah pembolehubah statik dalam fungsi ahli berkelakuan merentas keadaan kelas yang berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!