C++设计模式的,(接口继承有关问题)

C++设计模式的高手进,(接口继承问题)
一个接口(IA)定义了人。学生继承于IA。
学生接口(IB)派生于人的接口,并定义了上学等方法。学生继承与IB。

于是设计了如下方法实现。但C++似乎不管IB继承与IA,它会重新制造个虚表来存放IB。我设计的不对么?请大家多多指教。

class   IA{
public:
virtual   void   work()   =   0;
};

class   IB   :   public   IA{
public:
virtual   void   study()   =   0;
};

class   A   :   public   IA
{
public:
void   work(){
cout < < "work ";
}
};

class   B   :   public   A,   public   IB
{
public:
void   study(){
cout < < "study ";
}
};

------解决方案--------------------
写错了。
让A和IB都从IA进行虚拟继承。

virtual inheritance正就被设计用来解决你的问题的。
------解决方案--------------------
virtual inheritance
------解决方案--------------------
如楼上所说,用virtual继承就可以避免继承多个父类的问题