yet another

#include <cstdio>
struct I {
    virtual I *f() = 0;
};
struct A : virtual I {
    virtual I *f() { puts("A"); return this; }
};
struct B : virtual I {
    virtual I *f() { puts("B"); return this; }
    B(I *x) { x->f(); }
};
struct C : A, B {
    virtual I *f() { puts("C"); return this; }
    C() : A(), B(((A *)this)->f()) { ((A *)this)->f(); }
};
int main() {
    C c;
}

何が出るかな、何が(ry

続きを読む