Пример переполнения стека на C++
Представьте, что у вас есть кусочек кода следующего содержания:
operator int() const { return *this; }
class Foo { public: operator int() const { return *this; } }; int main() { Foo foo; int i = foo; return 0; }
Этот код без проблем скомпилируется, хотя ряд компиляторов может сказать warning. Но когда вы этот код запустите, вы столкнётесь с переполнением стека, словив stack overflow.
В чём же дело?
Оказывается, что в нашем коде operator
Таким образом, функция вызывает сама себя и продолжает это делать рекурсивно, то есть до тех пор, пока стек не переполнится.