Easyforward-declaration
Что такое forward declaration и для чего?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Forward declaration — объявление типа/функции без полного определения. Позволяет использовать указатель/ссылку и ускоряет компиляцию.
// widget.h
class Renderer; // forward declaration — без #include "renderer.h"
class Widget {
Renderer* renderer_; // OK: указатель (размер не зависит от Renderer)
public:
void render(); // OK: только объявление метода
};
// widget.cpp — здесь нужно полное определение
#include "renderer.h"
void Widget::render() { renderer_->draw(); }Ограничения: нельзя создать объект, вызвать метод, наследоваться без полного определения. pimpl — крайний случай forward declaration.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.