static
ist ein Speicherspezifizierer. Das Wort "statisch" bedeutet unveränderlich. "Speicher" bezieht sich darauf, wo sich das Objekt im Speicher befindet, d. H. Seine Adresse.
Ein Objekt mit static
Speicher befindet sich an einer konstanten Adresse.
Es ist einfach so, dass ein Objekt mit extern
Speicher auch eine konstante Adresse hat. Aufgrund der Art, wie C- und C++ - Programme miteinander verknüpft sind, ist dies eine Notwendigkeit. Und weil extern
das am wenigsten überraschende Verhalten ist, ist es auch die Standardeinstellung.
Wenn Sie darüber nachdenken in Bezug auf extern
ist ein zusätzliches Feature auf static
, ich denke, es macht ein bisschen mehr Sinn. Es ist ein wenig dumm, eine Funktion static
zu deklarieren, da es keine Alternative in einer vollständig kompilierten Sprache gibt, aber die Adresse einer Funktion ist statisch, auch wenn sie nicht von außen sichtbar ist.
Der wirklich inkonsequent Teil, dann ist, dass die Teilnehmer, die static
, nicht extern
...
Die C-Version bedeutet
Und statische hat, wie viele C++ - Schlüsselwort, eine kontextabhängige Bedeutung. – Klaim