Rumah >pembangunan bahagian belakang >C++ >Adakah Pembolehubah Statik dalam Fungsi Ahli Bertambah untuk Semua Kejadian atau Hanya Contoh Panggilan?
Pembolehubah Statik dalam Fungsi Ahli: Memahami Pengisytiharan Khusus Instance vs. Global
Dalam C , pembolehubah statik dalam fungsi ahli menunjukkan situasi yang unik di mana tingkah laku mereka berbeza daripada rakan sejawat mereka yang tidak statik. Mari kita terokai cara pembolehubah statik berfungsi dalam fungsi ahli.
Pertimbangkan definisi kelas berikut:
class A { void foo() { static int i; // Static variable declaration i++; } };
Jika anda mengisytiharkan berbilang kejadian kelas A, persoalan timbul: Adakah memanggil foo() dihidupkan sebarang contoh menambah pembolehubah statik i untuk semua kejadian atau hanya untuk contoh yang foo() dipanggil?
Jawapannya terletak pada sifat pembolehubah statik. Tidak seperti pembolehubah ahli biasa, yang khusus untuk setiap kejadian kelas, pembolehubah statik dikongsi antara semua kejadian kelas itu. Ini bermakna terdapat hanya satu kejadian pembolehubah statik i merentas semua kejadian kelas A.
Akibatnya, sebarang kejadian kelas A akan mempengaruhi i yang sama. Perkara yang sama saya akan kekal sepanjang hayat program ini. Untuk menggambarkan tingkah laku ini:
A o1, o2, o3; o1.foo(); // Increment i to 1 o2.foo(); // Increment i to 2 o3.foo(); // Increment i to 3 o1.foo(); // Increment i to 4
Dalam contoh ini, hanya ada satu yang saya kongsikan antara semua tika kelas A, dan memanggil foo() pada mana-mana tika menambah i. Tingkah laku perkongsian pembolehubah statik ini penting untuk diingat semasa mereka bentuk kelas dan fungsi ahlinya.
Atas ialah kandungan terperinci Adakah Pembolehubah Statik dalam Fungsi Ahli Bertambah untuk Semua Kejadian atau Hanya Contoh Panggilan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!