Freigeben über


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

  • Qualifizieren einer Deklaration als const oder volatile

  • 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.

Siehe auch

Weitere Ressourcen

C++-Sprachreferenz