为何C++里调用虚函数比调用普通函数慢?

为何C++里调用虚函数比调用普通函数慢? 缘由: - 运行时须要获得对应类的函数的地址 - 当在用父类的引用或者指针调用虚函数时,会先从该对象的头部取到虚函数的地址(C++标准规定虚函数表地址必须放最前),再从虚函数表中取到实际要调用的函数的地址,最终调用该函数 - 调用虚函数,相比普通函数,实际上多了三条指令:取虚表,取函数地址,call调用。 - 影响cpu流水线 - 编译器不能是内联函数 -
相关文章
相关标签/搜索