Hardfunction-try-block
Что такое function-try-block?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Function-try-block оборачивает всё тело функции, включая ctor-initializer. Используется для ловли исключений из initializer-list конструктора.
class Derived : public Base {
Member m_;
public:
Derived(int x)
try : Base(x), m_(x) { // try захватывает initializer-list
// тело конструктора
} catch (const std::exception& e) {
std::cerr << "ctor failed: " << e.what();
// неявный throw; — объект не создан, «проглотить» нельзя
}
};Для конструктора catch обязан перебросить (явно или неявно). На практике используется редко — RAII-члены решают большинство проблем.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.