05 August, 2013

С++ задачка

Еще одна задача на тонкости C++,
что выведет этот код?

#include <QtDebug>

class A {
public:
    virtual void foo(int i = 1)
    {
        qDebug() << "A" << i;
    }
};

class B : public A {
public:
    virtual void foo(int i = 100) override
    {
        qDebug() << "B" << i;
    }
};

int main()
{
    A *b = new B();
    B *bb = dynamic_cast<B *>(b);
    b->foo();
    bb->foo();
    return 0;
}

Ответ внутри