1
因为虚函数需要一次间接的寻址........
而一般的函数可以在编译时定位到函数的地址,而虚函数(动态类型调用)是根据某个指针定位到函数的地址
针对类的虚函数机制,如果有虚函数的话,编译器会为类增加一个虚函数便(VBL)当在动态执行时,会到该函数表中寻找函数,多增加了一个过程,效率自然比较低一点,但是同时带来了多态
设想一下,如果不是虚函数,那么编译其间,其相对地址是确定的,编译器可以直接生成
jmp/invoke指令,如果是虚函数,多一次查找vtable所带来的开销,倒是次要的,关键在于还是动态的