Declaraciones
Las declaraciones introducen nuevos nombres en un programa. Entre los temas que se tratan en esta sección se incluyen los usos de las declaraciones.
Especificar la clase de almacenamiento, el tipo y la vinculación de un objeto o una función.
Declarar una función como inline o virtual.
Asociar un nombre a una constante (declaración deenumeración).
Declarar un nuevo tipo (declaración class, struct o union).
Especificar un sinónimo para un tipo (declaración typedef).
Especificar un espacio de nombres.
Declarar un tipo para usarlo como sinónimo con un alias.
Además de introducir un nuevo nombre, una declaración especifica cómo debe interpretar el compilador un identificador. Las declaraciones no reservan automáticamente el almacenamiento asociado al identificador. Las definiciones reservan el almacenamiento.
Nota
La mayoría de las declaraciones son también definiciones.Entre las declaraciones que no son definiciones se incluyen las declaraciones de clase sin la lista de miembros y las declaraciones de función sin el cuerpo de la función.
Una declaración puede ser una de las siguientes:
[ decl-specifiers ] [ declarator-list ] ;
function-definition
linkage-specification
template-specification
plantillas de alias
explicit-template-instantiation
explicit-template-specialization
namespace-definition
namespace-alias-definition
alias-declaration
using-declaration
using-directive
asm-definition
El componente decl-specifiers de una declaración se muestra como opcional; sin embargo, solo se puede omitir en las declaraciones de tipos de clase o de enumeraciones.
Los declaradores del componente declarator-list contienen los nombres que se van a declarar. Aunque declarator-list se muestre como opcional, solo se puede omitir en las declaraciones o definiciones de una función.
Nota
La declaración de una función se suele denominar un prototipo.Un prototipo proporciona información sobre los tipos de los argumentos y el tipo del valor devuelto de la función.Además, un prototipo permite al compilador realizar conversiones correctas y ayuda a proporcionar seguridad de tipos.
Se considera que un nombre se declara inmediatamente después de su declarador pero antes de su inicializador (opcional). Para más información, vea Punto de declaración.
Las declaraciones tienen lugar en un ámbito. El ámbito controla la visibilidad del nombre declarado y la duración del objeto definido, si existe. Para obtener más información sobre cómo interactúan las reglas de ámbito con las declaraciones, vea Ámbito.
Una declaración de objeto es también una definición a menos que contenga el especificador de clase de almacenamiento extern que se describe en Especificadores de clase de almacenamiento. Una declaración de función es también una definición a menos que sea un prototipo. Un prototipo es un encabezado de función sin un cuerpo de definición de la función. La definición de un objeto provoca la asignación del almacenamiento y las inicializaciones adecuadas para ese objeto.
Temas relacionados
Para información sobre function-definition, vea Definiciones de funciones de C++.
Para obtener información sobre linkage-specification, vea Especificaciones de vinculación.
Para obtener información sobre template-specification, explicit-template-instantiation y explicit-template-specialization, vea Plantillas.
Para obtener información sobre namespace-definition y namespace-alias-definition, vea Espacios de nombres (C++).
Para obtener información sobre asm-definition, vea __asm.