Rumah > pembangunan bahagian belakang > C++ > Mengapakah Saya Tidak Boleh Memulakan Pembolehubah Ahli Statik Tidak Malar Dalam Kelas C?

Mengapakah Saya Tidak Boleh Memulakan Pembolehubah Ahli Statik Tidak Malar Dalam Kelas C?

Barbara Streisand
Lepaskan: 2024-12-17 10:56:24
asal
646 orang telah melayarinya

Why Can't I Initialize Non-Constant Static Member Variables Within a C   Class?

Memahami Larangan Permulaan Dalam Kelas untuk Ahli Statik Bukan Malar

Dalam C , cuba mentakrifkan pembolehubah statik awam dengan nilai awal, seperti statik int j=0;, mencetuskan ralat kompilasi. Ini dikaitkan dengan peraturan asas dalam ISO C yang melarang permulaan dalam kelas bagi pembolehubah ahli statik bukan malar.

Rasional untuk Larangan

Tidak seperti dalam C, di mana pembolehubah sedemikian dimulakan secara tersirat kepada sifar, C memberi mandat bahawa mereka kekal tidak dimulakan. Perbezaan ini berpunca daripada prinsip ketelusan rujukan, yang memastikan bahawa nilai ahli statik kekal konsisten merentas semua kejadian kelas. Membenarkan permulaan dalam kelas boleh menjejaskan prinsip ini, yang membawa kepada ketidakkonsistenan dalam nilai pembolehubah.

Pemulaan Ahli Statik Malar

Berbeza dengan ahli bukan malar, ahli statik malar dibenarkan untuk dimulakan dalam kelas kerana nilainya tidak boleh diubah suai selepas permulaan. Ini bermakna ahli ini mengekalkan nilai yang konsisten sepanjang hayat mereka.

Implikasi untuk Permulaan Pembolehubah Statik

Larangan permulaan dalam kelas membayangkan bahawa pembolehubah statik dalam C tidak dimulakan secara automatik dengan 0 sebagai dalam C. Sebaliknya, mereka kekal tidak dimulakan sehingga diberikan nilai secara eksplisit di tempat lain dalam program.

Betul Permulaan dalam C

Untuk memulakan pembolehubah statik dengan betul dalam C , adalah perlu untuk mentakrifkannya dalam fail pengepala dan menetapkan nilai awal dalam fail .cpp yang berasingan, seperti yang ditunjukkan dalam coretan kod di bawah:

// Header file
class Test {
public:
  static int j;
};

// .cpp file
// Initialize static variables
int Test::j = 0;
Salin selepas log masuk

Dengan mengikuti pendekatan ini, anda boleh memastikan pembolehubah statik dimulakan dengan betul dan konsisten merentas semua kejadian kelas.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Memulakan Pembolehubah Ahli Statik Tidak Malar Dalam Kelas C?. 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