
Что не так в этом отрывке кода на С++?
operator int() const {
return *this;
}
Выше приведен полный код для проверки.
Ответ:
Он скомпилируется, хотя некоторые компиляторы могут кинуть warning, сразу же объясняющий, в чём суть ошибки. Но вот при запуске вы словите stack overflow. Дело в том, что operator int будет пытаться привести возвращаемое значение к типу int, что вполне можно сделать, ведь для текущего объекта у нас есть замечательный operator int, который это и делает. То есть функция вызовет сама себя и будет продолжать это делать рекурсивно, пока не переполнится стек.
operator int() const {
return *this;
}
Выше приведен полный код для проверки.
Ответ:
Он скомпилируется, хотя некоторые компиляторы могут кинуть warning, сразу же объясняющий, в чём суть ошибки. Но вот при запуске вы словите stack overflow. Дело в том, что operator int будет пытаться привести возвращаемое значение к типу int, что вполне можно сделать, ведь для текущего объекта у нас есть замечательный operator int, который это и делает. То есть функция вызовет сама себя и будет продолжать это делать рекурсивно, пока не переполнится стек.