Подтвердить что ты не робот

Что значит?

У меня есть 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
4b9b3361

Ответ 1

void foo() { base:foo(); }

эквивалентно:

void foo()
{
   base: // An unused label.
   foo(); // Calls the function again, resulting in infinite recursion.
}

Из-за бесконечной рекурсии функция вызывает переполнение стека.