2013-03-04 96 views
6

最近我一直在做很多的阅读,同时涉及继承(和虚函数),我一直在“内联”关键字中徘徊。现在我知道在正常意义上内联是什么 - 编译器可以用精确的代码替换函数调用。然而,我所看到的关于继承的次数是否有一些在继承中使用内联的特殊原因?我不明白为什么它一直被提及......继承和内联?

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

+0

@BillyONeal我不认为这个链接真正解释了什么是连接(如果有的话)。 – user997112 2013-03-04 23:02:22

+1

再一次....这不是重复的。我在问什么是链接......这个问题是问是否将内联放在虚函数上是毫无意义的......对于那些知道答案的人来说,容易找到一个类似于答案的问题 - 但是, t意思是相同的。我不知道答案,并阅读其他问题没有帮助。 – user997112 2013-03-04 23:08:32

回答

2

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

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

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