c++中常成员函数与多态结合的问题

将基类中的常成员函数定义为纯虚函数,如果派生类中该成员函数不定义为常成员函数的话,创建派生类对象时会报错说派生类是虚基类,无法创建实例化对象。这个是什么问题啊?能不能详细讲解一下这个原因?

class person
{
  public:
  virtual void show() const =0;
}
class student : public person
{
public:
  void show()
{
  cout<<name;
}
private:
  string name;
}

int main ()
{
 student s ;
}