Rumah > pembangunan bahagian belakang > C++ > Adakah Pembolehubah Statik dalam Fungsi Ahli Bertambah untuk Semua Kejadian atau Hanya Contoh Panggilan?

Adakah Pembolehubah Statik dalam Fungsi Ahli Bertambah untuk Semua Kejadian atau Hanya Contoh Panggilan?

Patricia Arquette
Lepaskan: 2024-11-08 09:41:01
asal
647 orang telah melayarinya

Do Static Variables in Member Functions Increment for All Instances or Only the Calling Instance?

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

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

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!

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