Объявления и определения (C++)

Объявления скажите компилятору, что элемент или имя программы.определения определите, какие код или данные из названия.Имя должна быть объявлена, прежде чем ее можно использовать.

Объявления

Объявление вставляет одну или несколько имен в программу.Объявления могут встречаться несколько раз в программе.Поэтому классы, структуры, перечисленных типов, а другие пользовательские типы могут быть объявлены для каждой единицы компиляции.Ограничение этом нескольких объявлении, что все объявления должны быть идентичными.Объявления также служат в качестве определения, за исключением случаев, когда объявление:

  1. Прототип функции (объявление функции не имеет тела функции).

  2. Содержит extern описатель но без инициализатор (объекты и переменные) или тело функции (function).Это означает, что это определение не обязательно является текущей единицы измерения перевода и дает внешний имени переключателя.

  3. Статического члена данных внутри объявления класса.

    Поскольку статические элементы данных классов дискретных переменных совместно используемые всеми объектами класса, их следует определить и инициализировал вне объявления класса.(Дополнительные сведения о классах и членах класса см. в разделе Классы.)

  4. Объявление имя класса без следующего определения, например class T;.

  5. a typedef выписка.

Примеры объявлений, которые также определения:

// 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;
};

Некоторые объявления, не определений:

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

Определения

Определение уникальных спецификация объекта или переменной, функции, класса или перечислителя.Поскольку определения должны быть уникальными, программа может содержать только одно определение для данного элемента программы.Могут быть " многие к одному " между объявлениями и определениями корреспонденция.2 Вариантов, в котором элемент программы можно объявить и не указать:

  1. Функция объявлена, но никогда не была создана ссылка с вызовом функции или с выражением, которое принимает адрес функции.

  2. Класс используется только таким способом, который не требует его определения, был известен.Однако класс должен быть объявлен.Следующий код иллюстрирует такое case:

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

См. также

Ссылки

Основные понятия