6

我最近读了很多书,在介绍继承(和虚函数)的同时,我一直在偶然发现“内联”关键字。现在我知道正常意义上的内联是什么——编译器可以用确切的代码替换函数调用。但是,我看到它提到的关于继承的次数——在继承中使用内联有什么特殊原因吗?不明白为什么一直被提及......

内联函数在继承/派生类/虚拟函数中具有什么额外作用?

4

1 回答 1

4

是的,在虚函数上使用内联是浪费时间。必须通过由函数指针组成的虚函数表来调用虚函数。内联函数不能被指针调用。它必须作为一个真正的功能存在。

有一些例外。如果调用者知道确切的对象类型,它可以完全跳过虚函数表。

过度使用 virtual 关键字会导致代码非常慢。编译器可能能够内联和优化三个或四个小函数调用,使用虚拟函数它必须执行实际的函数调用,不对调用之间的内存或寄存器状态做任何假设。

于 2013-03-06T03:49:40.663 回答