求正确输出结果c++

#include <iostream>
using namespace std;
class Base1
{public:
    Base1()
    {cout<<"class Base1"<<endl;    }
};
class Base2
{public:
    Base2()
    {cout<<"class Base2"<<endl;    }
};
class Level1:public Base2,virtual public Base1
{public:
    Level1()
    {cout<<"class Level1"<<endl;}};
 
class Level2:public Base2,virtual public Base1
{public:
    Level2()
    {cout<<"class Level2"<<endl;}
};
class Toplevel:public Level1,public Level2
{public:
    Toplevel()
    {cout<<"class TopLevel"<<endl;    }};
void main()
{    
Toplevel obj;
}

正确的输出结果应该是什么呀,不懂虚拟继承,求解求解

这个不懂?定义一个对象obj调用上面的函数,没有学过面向对象语言吗:


class Base1
class Base2
class Level1
class Level2
class TopLevel