假设我们有:
class Base
{
__forceinline virtual int A() {return 1;}
}
class Derived: public Base
{
int A()
{
return 2;
}
}
派生类中的函数 A 是虚函数,无需明确声明。在没有明确声明的情况下,派生类中的函数 A 也会被 __forceinlined 吗?
最佳答案
首先,虚拟调用的函数无法内联 - 编译器需要首先到达 vtable 指针才能知道要调用哪个函数。并非所有标记为virtual
的函数都被虚拟调用 - 这些函数可以内联。
然后,__forceinline
不会传播到派生类实现 - 它是一个非标准编译器特定关键字,对每个函数都有效。因此,如果您想强制内联,则必须在派生类函数中再次应用该关键字。同样,它不能保证所有调用都会被内联。
关于c++ - 基类中的 _forceinline 虚函数是否会在派生类中 __forceinlined 而不明确声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6842690/