Dalam C , seseorang tidak boleh mengisytiharkan ahli const statik bagi kelas dengan bukan bersepadu menaip. Sekatan ini timbul disebabkan reka bentuk khusus mekanisme ahli data const statik bahasa C.
Ahli data integral const statik biasanya disimpan dalam segmen kod (atau segmen data baca sahaja) dan boleh digunakan tanpa peruntukan ingatan. Walau bagaimanapun, untuk jenis bukan penyepaduan seperti berganda, pengkompil biasanya menyimpan nilai dalam segmen data yang dimulakan.
Pendekatan ini memastikan bahawa jenis kamiran boleh dioptimumkan dengan cekap dengan diselaraskan terus di tempat ia digunakan. Walau bagaimanapun, untuk jenis bukan bersepadu, pengkompil tidak dapat menjamin sama ada ia akan menyelaraskan nilai atau tidak. Ketidakpastian ini boleh membawa kepada ralat masa jalan yang halus jika pengkompil memutuskan untuk menyelaraskan nilai dalam keadaan tertentu tetapi tidak dalam keadaan yang lain.
Untuk menangani isu ini, pereka bentuk C menyertakan sekatan untuk memastikan ahli const statik hanya boleh daripada jenis integral. Dengan cara ini, pengaturcara boleh yakin bahawa ahli const integral sentiasa selaras, membolehkan prestasi yang boleh dipercayai dan mengelakkan potensi isu masa jalan.
Sebagai penyelesaian, anda boleh mengisytiharkan fungsi bukan statik dalam kelas yang mengembalikan yang diingini nilai, seperti yang anda lakukan dalam contoh "Now_Good" anda. Pendekatan ini memberikan anda kefungsian pemalar, sambil tetap mematuhi reka bentuk bahasa untuk ahli const statik.
Atas ialah kandungan terperinci Mengapa Kelas C Tidak Boleh Mempunyai Ahli Konst Statik Bukan Integral?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!