#include <iostream>
using namespace std;
//虚继承的意义
//在多继承中,保存共同基类的多份同名成员,虽然有时是必要的,可以在不同的数
//据成员中分别存放不同的数据,但在大多数情况下,是我们不希望出现的。因为保留多
//份数据成员的拷贝,不仅占有较多的存储空间,还增加了访问的困难。
//为此,c++提供了,虚基类和虚继承机制,实现了在多继承中只保留一份共同成员。
//虚基类,需要设计和抽象,虚继承,是一种继承的扩展
//解决多重多级继承造成的二义性
class A
{
public:
int i;
void print(){