为什么要用虚函数