После бурной дискуссии у меня возник вопрос: а, действительно, как много людей, знающих (или считающих что они знают) C++ могут ответить на вопрос, подобный «простейшему тесту» из обсуждаемой статьи.
#include <iostream>
int test(int x) {
static const int y = test(x + 1) * 2;
return x + y;
}
int main() {
std::cout << test(42) << std::endl;
std::cout << test(0) << std::endl;
}
Вопросы:
1. Для какой версии GCC будет работать эта программа?
2. Что она выведет на экран?
3. Как отрефакторить функцию test() чтобы она стала совместима со стандартом (и с GCC 4.2, соответственно)?
Ну и парочка более простых примеров (примерно как задачка номер два там):
4. Как описать внутри класса функцию классу не принадлежающую (то есть не являющуюся ни статическим, ни динамическим методом класса)?
5. Зачем эта возможность нужна в C++?
Ну и напоследок вопрос: а стоит ли задавать подобные вопросы на собеседовании?
P.S. Подсказки пишите белым по белому, как обычно…
#include <iostream>
int test(int x) {
static const int y = test(x + 1) * 2;
return x + y;
}
int main() {
std::cout << test(42) << std::endl;
std::cout << test(0) << std::endl;
}
Вопросы:
1. Для какой версии GCC будет работать эта программа?
2. Что она выведет на экран?
3. Как отрефакторить функцию test() чтобы она стала совместима со стандартом (и с GCC 4.2, соответственно)?
Ну и парочка более простых примеров (примерно как задачка номер два там):
4. Как описать внутри класса функцию классу не принадлежающую (то есть не являющуюся ни статическим, ни динамическим методом класса)?
5. Зачем эта возможность нужна в C++?
Ну и напоследок вопрос: а стоит ли задавать подобные вопросы на собеседовании?
P.S. Подсказки пишите белым по белому, как обычно…