Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah pembolehubah statik dalam fungsi ahli berkelakuan merentas keadaan kelas yang berbeza?

Bagaimanakah pembolehubah statik dalam fungsi ahli berkelakuan merentas keadaan kelas yang berbeza?

Susan Sarandon
Lepaskan: 2024-11-09 09:06:01
asal
838 orang telah melayarinya

How do static variables in member functions behave across different instances of a class?

Pembolehubah Statik dalam Fungsi Ahli

Pertimbangkan kelas berikut:

class A {
   void foo() {
      static int i;
      i++;
   }
};
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan