Permulaan Pembolehubah Ahli Statik dalam C
Dalam C , pembolehubah ahli statik dimulakan di luar definisi kelas. Pilihan reka bentuk ini telah menimbulkan persoalan berkenaan penaakulan logiknya dan potensi implikasi warisannya.
Sebab Permulaan Luaran
Ahli statik mesti ditakrifkan dalam satu unit terjemahan untuk dipatuhi Peraturan Satu Definisi. Jika pemulaan dibenarkan dalam kelas, berbilang takrifan boleh timbul dalam unit terjemahan yang berbeza di mana fail pengepala disertakan.
Contoh
Pertimbangkan coretan kod berikut:
struct Gizmo { static string name = "Foo"; };
Jika nama itu dimulakan dalam kelas, ia akan ditakrifkan dalam setiap unit terjemahan yang termasuk pengepala fail. Ini akan melanggar Peraturan Satu Definisi.
Ahli Statik Sepadu
C membenarkan permulaan ahli statik kamiran dalam perisytiharan. Walau bagaimanapun, definisi luaran masih diperlukan dalam satu unit terjemahan untuk memenuhi Peraturan Satu Definisi. Ini berfungsi sebagai pintasan sintaksis:
struct Gizmo { static const int count = 42; };
Selagi ungkapan yang digunakan dalam pemulaan adalah kamiran const atau jenis penghitungan, boleh dinilai pada masa penyusunan dan definisi wujud dalam unit terjemahan tunggal, pendekatan ini adalah sah. Contohnya:
gizmo.cpp
#include "gizmo.h" const int Gizmo::count;
Atas ialah kandungan terperinci Mengapakah Pembolehubah Ahli Statik C Dimulakan di Luar Definisi Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!