虚函数可以用C++来内联吗?

虚拟函数 是使用关键字virtual在基类中声明的成员函数,可以被派生类重写。它们被用来实现 运行时多态性 或者说 后期装订 动态绑定。

null

内联函数 用于在编译时用内联函数的定义替换函数调用位置。它们用于提高效率。内联函数背后的整体思想是,每当调用内联函数时,内联函数的代码就会在编译时内联函数调用时被插入或替换。内联函数在程序中经常使用和多次调用小函数时非常有用。

默认情况下, 除虚函数外,类内定义的所有函数都隐式或自动视为内联函数。

注: 内联是对编译器及其编译器选择是否内联的请求。

虚拟函数可以内联吗?

无论何时使用基类引用或指针调用虚函数,都不能内联,因为调用是在运行时解析的;但无论何时使用该类的对象(没有引用或指针)调用虚函数,都可以内联,因为编译器在编译时知道对象的确切类。

C++

// CPP program to demonstrate that
// virtual functions can be inlined
#include <iostream>
using namespace std;
class Base {
public :
virtual void who() { cout << "I am Base" ; }
};
class Derived : public Base {
public :
void who() { cout << "I am Derived" ; }
};
int main()
{
// Part 1
Base b;
b.who();
// Part 2
Base* ptr = new Derived();
ptr->who();
return 0;
}


输出

I am BaseI am Derived

说明: 在里面 第一部分, 通过类的对象调用的虚拟函数who()。因为它将在编译时解析,所以可以内联。在里面 第二部分 ,虚拟函数是通过指针调用的,因此不能内联。

本文由 见见普拉瓦西 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享