小编Ian*_*nas的帖子

针对同一对象上重复调用同一函数的虚函数优化

假设有这样一个抽象类:

class Base {
   public:

   virtual void f() = 0;

   virtual ~Base()  = default;
};
Run Code Online (Sandbox Code Playgroud)

还有一些功能:

void function (Base& x, bool flag1, bool flag2, bool flag3) {

   if(flag1)
      x.f();
   if(flag2)
      x.f();
   if(flag3)
      x.f();
}
Run Code Online (Sandbox Code Playgroud)

main()函数中,我从共享库加载派生自该类的实例:

int main() {
  Base* x = /* load from shared lib*/;

  bool flag1 = getchar() == '1';
  bool flag2 = getchar() == '2';
  bool flag3 = getchar() == '3';

  function(*x, flag1, flag2, flag3);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题:我是否可以期望在一次函数调用中,void function (Base& x, bool flag1, …

c++ virtual-functions vtable compiler-optimization

4
推荐指数
1
解决办法
210
查看次数