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.
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.
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.
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.
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;
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!