Compartilhar via


Declarações e definições (C++)

Declarações de dizer ao compilador que existe um elemento de programa ou um nome.Definições de especificar quais códigos ou dados o nome descreve.Um nome deve ser declarado antes que ele pode ser usado.

Declarações

Uma declaração apresenta um ou mais nomes em um programa.Declarações podem ocorrer mais de uma vez em um programa.Portanto, classes, estruturas, enumerados tipos e outros tipos definidos pelo usuário podem ser declarados para cada unidade de compilação.A restrição nessa declaração vários é que todas as declarações devem ser idênticas.Declarações também servem como definições, exceto quando a declaração:

  1. É um protótipo de função (uma declaração de função com nenhum corpo de função).

  2. Contém o extern especificador mas nenhum inicializador (objetos e variáveis) ou o corpo da função (funções).Isso significa que a definição não é necessariamente a unidade atual de tradução e dá a ligação externa do nome.

  3. É de um membro de dados estáticos dentro de uma declaração de classe.

    Como membros de dados de classe estática são compartilhadas por todos os objetos da classe de variáveis de discreto, eles devem ser definidos e inicializados fora da declaração de classe.(Para obter mais informações sobre classes e membros de classe, consulte Classes.)

  4. É uma declaração de nome de classe com nenhuma definição a seguir, como class T;.

  5. É um typedef instrução.

São exemplos de declarações que também são definições:

// Declare and define int variables i and j.
int i;
int j = 10;

// Declare enumeration suits.
enum suits { Spades = 1, Clubs, Hearts, Diamonds };

// Declare class CheckBox.
class CheckBox : public Control
{
public:
            Boolean IsChecked();
    virtual int     ChangeState() = 0;
};

Algumas declarações que não são definições são:

extern int i;
char *strchr( const char *Str, const char Target );

Definições

Uma definição é uma especificação exclusiva de um objeto ou variável, função, classe ou enumerador.Como as definições devem ser exclusivas, um programa pode conter somente uma definição para um elemento determinado programa.Pode haver uma correspondência de muitos-para-um entre declarações e definições.Há dois casos em que um elemento de programa pode ser declarado e não definido:

  1. Uma função é declarada mas nunca referenciada com uma chamada de função ou com uma expressão que leva o endereço da função.

  2. Uma classe é usada somente em uma forma que não requer a sua definição ser conhecida.No entanto, a classe deve ser declarada.O código a seguir ilustra nesse caso:

    // definitions.cpp
    class WindowCounter;   // Forward reference; no definition
    
    class Window
    {
       // Definition of WindowCounter not required
       static WindowCounter windowCounter;
    };
    
    int main()
    {
    }
    

Consulte também

Referência

Conceitos básicos