Добавьте глобальный объект, конструктор которого печатает сообщение. Его инициализация выполняется до входа в main, поэтому менять тело main не требуется.
Печать строки без изменения функции main
Добавьте глобальный объект, конструктор которого печатает сообщение. Его инициализация выполняется до входа в main, поэтому менять тело main не требуется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Не изменяя тело функции main, дополните программу так, чтобы при её запуске на экран выводилось сообщение "Hello world".
# include <iostream>
int main() {
return 0;
}
Ответ
Добавьте глобальный объект, конструктор которого печатает сообщение. Его инициализация выполняется до входа в main, поэтому менять тело main не требуется.
#include <iostream>
struct Greeting {
Greeting() { std::cout << "Hello world\n"; }
};
Greeting greeting;
int main() {
return 0;
}
Это демонстрация динамической инициализации объекта со статической длительностью хранения. В обычном приложении явный вызов из main понятнее: побочные эффекты глобальных конструкторов усложняют тестирование, обработку ошибок и порядок зависимостей между единицами трансляции.