Definições de função C++
As definições de função diferem das declarações de função porque fornecem corpos de função — o código que constitui a função. O formato de uma definição de função é:
decl-specifiers declarator [cv-qualifers] [exception-specification]
{
// function body
}
decl-specifiers declarator [cv-qualifers] =default;
decl-specifiers declarator [cv-qualifers] =delete;
As partes da definição são:
Especificadores de declaração, como descrito em Declarações de função.
O declarador (descrito posteriormente neste arquivo).
Um qualificador const ou volatile opcional. Nesse contexto, const pode ser usado somente para membros de classe, e é usado para indicar que a função não modificará membros de dados da classe.
Especificação de exceção que descreve que exceções a função poderá gerar. Consulte Especificações de exceção.
Corpo de função, que consiste em instruções entre chaves {}.
=default; no caso de uma definição explicitamente usada como padrão.
=delete; no caso de uma definição excluída.
O formato do declarador é:
Operadores opcionais de ponteiro ou referência que alteram o tipo de retorno.
Um modificador opcional específico da Microsoft. Consulte Modificadores específicos da Microsoft.
O nome da função. Se a função for membro de uma classe ou struct, o nome poderá ser qualificado usando o operador de resolução de escopo.
A lista de declarações de argumento entre parênteses ().
Para construtores, um inicializador do construtor opcional (descrito posteriormente neste artigo).
Para obter informações sobre o formato do declarador em alguns casos, consulte os comentários Declarações de função sobre as funções que retornam ponteiros de função.
Os argumentos formais declarados na lista de declarações de argumento estão no escopo do corpo da função.
A figura a seguir mostra as partes de uma definição de função. A área sombreada é o corpo da função.
Partes de uma definição de função
O elemento inicializador do construtor da sintaxe é usado somente nos construtores. Sua finalidade é permitir a inicialização de classes base e objetos contidos. Para obter mais informações sobre como usar o inicializador do construtor, consulte Inicializando bases e membros.
Uma definição explicitamente usada como padrão só pode ser declarada para uma função de membro especial. Quando uma função de membro especial é usada como padrão explicitamente, a implementação a definirá como se tivesse uma definição implícita, exceto que ela pode não ser embutida (uma função de membro especial implícito declarado é sempre embutida). Para obter mais informações sobre as funções usadas como padrão, consulte a seção "Funções padronizadas e excluídas" em Suporte a recursos do C++11 (C++ moderno).
Uma definição excluída, também conhecida como uma função excluída, é implicitamente embutida. Um programa que faz referência a uma função excluída explícita ou implicitamente, exceto para declará-la, está com formato incorreto. Para obter mais informações sobre as funções excluídas, consulte a seção "Funções padronizadas e excluídas" em Suporte a recursos do C++11 (C++ moderno).
Consulte também
Referência
Conceitos
Pesquisa de nome dependente do argumento (Koenig) em funções