虚拟函数 是使用关键字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