每个含有虚函数声明的类对象都有一个虚函数表,表里是所有的(从基类到派生类的)虚函数,对应有虚函数指针,它们根据指向的对象决定调用哪个函数。 如果注释掉 virtual 根本就不存在虚函数,也没有虚函数表及指针,所以基类指针只会调用基类的方法,而不会调用指针指向的派生类对象的方法。