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.
Especifique a classe de armazenamento, tipo e vinculação para um objeto ou uma função.
Declare a função como inline ou virtual.
Associe um nome com uma constante (declaração de enumeração).
Declare uma nova declaração de tipo (class, struct ou de union).
Especifique um sinônimo para um tipo (declaração de typedef).
Especifique um namespace.
Declare um tipo para usar como um sinônimo com alias.
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.