Partilhar via


Declarações

As declarações introduzem novos nomes em um programa. Os tópicos cobertos nesta seção incluem os seguintes usos para declarações.

Além da introdução de um novo nome, uma declaração especifica como um identificador deve ser interpretado pelo compilador. As declarações não permitem a reserva automática de armazenamento associado ao identificador. As definições reservam armazenamento.

Dica

A maioria de declarações também são definições.As declarações que não são definições incluem as declarações da classe sem a lista de membro, e declarações de função sem o corpo da função.

Uma declaração pode ser um dos seguintes:

[ decl-specifiers ] [ declarator-list ] ;

function-definition

especificação de vínculo

especificação de modelo

modelos de alias

explicit-template-instantiation

explicit-template-specialization

namespace-definition

namespace-alias-definition

alias-declaration

using-declaration

using-directive

asm-definition

O componente decl-specifiers de uma declaração é mostrado como opcional; no entanto, ele pode ser omitido somente em declarações de tipos ou de enumerações da classe.

Os declaradores no componente declarator-list contêm nomes que estão sendo declarados. Ainda que declarator-list seja mostrado como opcional, ele pode ser omitido somente em declarações ou nas definições de uma função.

Dica

A declaração de uma função frequentemente é chamada de protótipo.Um protótipo fornece informações de tipo sobre argumentos e o tipo de retorno da função.Além disso, um protótipo permite que o compilador execute as conversões corretas e ajuda a fornecer a segurança do tipo.

Um nome é considerado declarado imediatamente após seu declarator, mas antes de seu inicializador (opcional). Para obter mais informações, consulte Ponto de declaração.

As declarações ocorrem em um escopo. O escopo controla a visibilidade do nome declarado e a duração do objeto definido, se houver. Para obter mais informações sobre como as regras de escopo interagem com as declarações, consulte Escopo.

Uma declaração de objeto também é uma definição a menos que contenha o especificador de classe de armazenamento extern descrito em Especificadores de classe de armazenamento. Uma declaração de função também é uma definição a menos que seja um protótipo. Um protótipo é um cabeçalho da função sem um corpo da definição da função. A definição de um objeto resulta na alocação de armazenamento e inicializações apropriadas para esse objeto.

Tópicos relacionados

Para obter informações sobre function-definition, consulte Definições de função C++.

Para obter informações sobre linkage-specification, consulte Especificações de ligação.

Para obter informações sobre template-specification, explicit-template-instantiation e explicit-template-specialization, consulte Modelos.

Para obter informações sobre namespace-definition e namespace-alias-definition, consulte Namespaces (C++).

Para obter informações sobre asm-definition, consulte __asm.

Consulte também

Outros recursos

Referência de linguagem C++