Ответ 1
void foo() { base:foo(); }
эквивалентно:
void foo()
{
base: // An unused label.
foo(); // Calls the function again, resulting in infinite recursion.
}
Из-за бесконечной рекурсии функция вызывает переполнение стека.
У меня есть 2 класса:
class base {
virtual void foo() {};
};
class derived : public base {
void foo() { base::foo(); }
};
Я сделал ошибку и написал base:foo();
вместо base::foo();
. Код был скомпилирован и запущен, но скомпрометирован.
Я не знаю, как я могу это сделать Google и не знаю, что это такое, но мне очень интересно: что это значит?
base:foo();
Если это важно:
class base : public QAbstractGraphicsShapeItem
void foo() { base:foo(); }
эквивалентно:
void foo()
{
base: // An unused label.
foo(); // Calls the function again, resulting in infinite recursion.
}
Из-за бесконечной рекурсии функция вызывает переполнение стека.