Deklarationen
Deklarationen führen neue Namen in ein Programm ein. Zu den in diesem Abschnitt behandelten Themen gehören die folgenden Anwendungsbereiche für Deklarationen.
Angeben von Speicherklasse, Typ und Verknüpfung für ein Objekt oder eine Funktion
Deklarieren einer Funktion als inline oder virtual
Zuordnen eines Namens zu einer Konstante (Deklaration einer Enumeration)
Deklarieren eines neuen Typs (class-, struct- oder union-Deklaration)
Angeben eines Synonyms für einen Typ (typedef-Deklaration)
Angeben eines Namespace
Deklarieren eines Typs zur Verwendung als Synonym mit einem Alias
Mit einer Deklaration wird nicht nur ein neuer Name eingeführt, sondern auch angegeben, wie ein Bezeichner vom Compiler interpretiert werden soll. Deklarationen belegen den Speicher, der dem Bezeichner zugeordnet ist, nicht automatisch. Definitionen reservieren Speicher.
Hinweis
Die meisten Deklarationen sind auch Definitionen.Definitionen, die keine Deklarationen sind, beinhalten Klassendeklarationen ohne die Memberliste und Funktionsdeklarationen ohne den Funktionsrumpf.
Eine Deklaration kann Folgendes umfassen:
[ decl-specifiers ] [ declarator-list ] ;
function-definition
linkage-specification
template-specification
Aliasvorlagen
explicit-template-instantiation
explicit-template-specialization
namespace-definition
namespace-alias-definition
alias-declaration
using-declaration
using-directive
asm-definition
Die decl-specifiers-Komponente einer Deklaration wird als optional angezeigt. Sie kann jedoch nur in Deklarationen von Klassentypen oder Aufzählungen weggelassen werden.
Die Deklarationen in der declarator-list-Komponente enthalten die deklarierten Namen. Obwohl die declarator-list als optional gekennzeichnet ist, kann sie nur in Deklarationen oder Definitionen einer Funktion weggelassen werden.
Hinweis
Die Deklaration einer Funktion wird häufig als Prototyp bezeichnet.Ein Prototyp stellt Typinformationen über Argumente und den Rückgabetyp der Funktion bereit.Darüber hinaus gewährleistet ein Prototyp Typsicherheit und ermöglicht es dem Compiler, ordnungsgemäße Konvertierungen durchzuführen.
Es wird angenommen, dass ein Name unmittelbar nach seinem Deklarator, jedoch vor seinem (optionalen) Initialisierer deklariert wird. Weitere Informationen finden Sie unter Zeitpunkt der Deklarationen.
Deklarationen werden in einem Bereich aufgeführt. Der Bereich steuert die Sichtbarkeit des deklarierten Namens und die Dauer des definierten Objekts, falls vorhanden. Weitere Informationen darüber, wie Bereichsregeln mit Deklarationen interagieren, finden Sie unter Gültigkeitsbereich.
Eine Objektdeklaration ist auch eine Definition, es sei denn, sie enthält den extern-Speicherklassenspezifizierer, der in Speicherklassenspezifizierer beschrieben wird. Eine Funktionsdeklaration ist auch eine Definition, es sei denn, sie ist ein Prototyp. Ein Prototyp ist ein Funktionsheader ohne einen definierenden Funktionsrumpf. Die Definition eines Objekts bewirkt die Speicherbelegung und die richtige Initialisierung des Objekts.
Verwandte Themen
Weitere Informationen zu function-definition finden Sie unter C++-Funktionsdefinitionen.
Weitere Informationen zu linkage-definition finden Sie unter Verknüpfungsangaben.
Weitere Informationen zu template-specification, explicit-template-instantiation und explicit-template-specialization finden Sie unter Vorlagen.
Weitere Informationen zu namespace-definition und namespace-alias-definition finden Sie unter Namespaces (C++).
Weitere Informationen zu asm-definition finden Sie unter __asm.