Объявления и определения (C++)
Объявления скажите компилятору, что элемент или имя программы.определения определите, какие код или данные из названия.Имя должна быть объявлена, прежде чем ее можно использовать.
Объявления
Объявление вставляет одну или несколько имен в программу.Объявления могут встречаться несколько раз в программе.Поэтому классы, структуры, перечисленных типов, а другие пользовательские типы могут быть объявлены для каждой единицы компиляции.Ограничение этом нескольких объявлении, что все объявления должны быть идентичными.Объявления также служат в качестве определения, за исключением случаев, когда объявление:
Прототип функции (объявление функции не имеет тела функции).
Содержит extern описатель но без инициализатор (объекты и переменные) или тело функции (function).Это означает, что это определение не обязательно является текущей единицы измерения перевода и дает внешний имени переключателя.
Статического члена данных внутри объявления класса.
Поскольку статические элементы данных классов дискретных переменных совместно используемые всеми объектами класса, их следует определить и инициализировал вне объявления класса.(Дополнительные сведения о классах и членах класса см. в разделе Классы.)
Объявление имя класса без следующего определения, например class T;.
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 Вариантов, в котором элемент программы можно объявить и не указать:
Функция объявлена, но никогда не была создана ссылка с вызовом функции или с выражением, которое принимает адрес функции.
Класс используется только таким способом, который не требует его определения, был известен.Однако класс должен быть объявлен.Следующий код иллюстрирует такое case:
// definitions.cpp class WindowCounter; // Forward reference; no definition class Window { // Definition of WindowCounter not required static WindowCounter windowCounter; }; int main() { }