Rumah >pembangunan bahagian belakang >C++ >Mengapakah Ahli Data Statik C Mesti Ditakrifkan di Luar Kelas?
Dalam alam C , ahli data statik berada dalam kelas tetapi melangkaui sempadannya, memerlukan definisi di luar kelas itu sendiri. Seperti yang disahkan oleh pusat pengetahuan C IBM, "Pengisytiharan ahli data statik dalam senarai ahli kelas bukanlah definisi... [ia] mesti menentukan ahli statik di luar perisytiharan kelas, dalam skop ruang nama." Mengapa peraturan ini dikuatkuasakan? Apakah pertimbangan peruntukan memori asas yang memerlukan amalan ini?
Prinsip di sebalik mandat ini terletak pada asas "Peraturan Satu Definisi" bahasa itu. Peraturan ini menetapkan bahawa semua objek statik yang digunakan dalam program mesti mempunyai satu definisi dan hanya satu. Takrifan kelas, biasanya disimpan dalam fail pengepala, sering digabungkan merentasi berbilang unit terjemahan (fail sumber). Sekiranya pengisytiharan objek statik diletakkan dalam pengepala, setiap unit yang disertakan akan menghasilkan takrifan yang berasingan, secara langsung melanggar Peraturan Satu Definisi.
Untuk mengelakkan bahaya ini, definisi kelas dalam pengepala hanya mengisytiharkan ahli data statik tanpa mentakrifkannya . Ini memaksa pengaturcara untuk memberikan definisi yang jelas di tempat lain. Walaupun secara teorinya mungkin bagi bahasa untuk menyatukan berbilang definisi menjadi satu, seperti yang dilakukan dengan fungsi sebaris, ini tidak berlaku dengan ahli data statik. Oleh itu, kita ditinggalkan dengan keperluan bahasa untuk definisi luaran ahli data statik.
Atas ialah kandungan terperinci Mengapakah Ahli Data Statik C Mesti Ditakrifkan di Luar Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!