一段简单c++代码

最近遇到一个有意思的问题,代码很简单,涉及到的东西会有一些,包括编译、虚函数等。

class A {
    public:
        A() {}
        A(int i) {}
        virtual void print(int j = 1){
            cout << "base: " << j << endl;
        }
};
class B : public A {
    public:
        virtual void print(int j = 4){
            cout << "derived: " << j << endl;
        }
    B() {}
    A a;
};
int main(){
    B b;
    A *a = &b;
    a -> print();
    return 0;
}

上面输出是多少