Die Unterscheidung zwischen Strukturen und Klassen in C
In C ist vielen aufgefallen, dass das Typmerkmal std::is_class für beide true zurückgibt Klassen und Strukturen. Dies wirft die Frage auf, warum es bei diesem Merkmal keine klare Unterscheidung zwischen beiden gibt. Es wird allgemein angenommen, dass Klassen und Strukturen in C praktisch identisch sind, aber ist das wirklich der Fall?
Entgegen der landläufigen Meinung unterstützt C seit 1985 keine Strukturen mehr. Jeder Typ wird entweder mit dem Schlüsselwort class oder struct deklariert ist grundsätzlich eine Klasse. Das Schlüsselwort struct wurde zusammen mit den eindeutigen Sichtbarkeitsregeln, die auf solche Klassendeklarationen angewendet werden, ausschließlich aus Gründen der Abwärtskompatibilität mit C beibehalten.
Der Grund, warum C in std::is_class nicht zwischen Klassen und Strukturen unterscheidet, liegt darin, dass Es gibt keinen inhärenten Unterschied zwischen ihnen. Aus sprachlicher Sicht werden alle mit beiden Schlüsselwörtern definierten Typen einheitlich als Klassen erkannt.
Das obige ist der detaillierte Inhalt vonWarum gibt „std::is_class' für Strukturen in C „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!