Easyосновы

Чем отличается объявление (declaration) от определения (definition)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Объявление вводит имя и тип в программу, не выделяя память и не давая тела. Определение фактически создаёт сущность: функция получает тело, переменная — место в памяти.

void foo();           // объявление
extern int x;         // объявление
class Widget;         // объявление (forward declaration)

void foo() { /*...*/ }// определение
int x = 0;            // определение
class Widget { /*...*/ }; // определение

Правило: объявлений может быть сколько угодно, но определение должно быть одно во всей программе (ODR). Заголовки обычно содержат объявления, .cpp — определения.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.