Easydeclaration

Чем declaration отличается от definition?

1Постановка

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

2Решение

Объявление (declaration) вводит имя и тип. Определение (definition) = объявление + создание сущности (тело функции, выделение памяти).

void f(int);          // объявление функции
void f(int x) { /*...*/ }  // определение

extern int x;         // объявление переменной
int x = 5;            // определение

class Foo;            // объявление (forward)
class Foo { /*...*/ };    // определение

Правило ODR: объявлений может быть много, определение — одно во всей программе. Необъявлённая-но-неопределённая функция → undefined reference от линкера.

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

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

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