多继承的不解

多继承的疑惑
#include <iostream>
using namespace std;
class a
{
public:
  virtual void kk();//{}//虚函数是有函数体的
};
class P :virtual public a{
public:
  virtual void kk(){cout<<"pppppp";}
};
class M :virtual public a{
public:
  virtual void kk(){cout<<"mmmmmm";}
};
class Child : public P,public M{//
public:
};

void main() {
} ///:~~~~~~~~~~~~~~~~~~~~~~~~~~<span style="font-size:32px;color:#ff0000;">编译不过</span>
//根本的原因是什么??