c++ - 基类中的 _forceinline 虚函数是否会在派生类中 __forceinlined 而不明确声明?

标签 c++ class virtual inline derived

假设我们有:

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/

相关文章:

javascript - javascript中类之间共享的属性

android - 在 Corona 中使用类传递数组对象

c++ - 按地址从 vector 中删除一个元素

C++ 外部 vector 变量错误

CSS 级联优先级

c++ - 这里虚拟运算符 ()() 的目的是什么?

c++ - 模拟虚方法的构造函数行为

c++ - 使用 TMP 检查类是否具有复制构造函数

c++ - 函数根据整数增加/减少堆栈指针

c++ - 虚拟模板解决方法