virtual function declared non-virtual in a derived class

后端 未结 5 2403
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-19 12:56

If a function is declared non-virtual in a derived class when the base class function was virutal, why does it invoke a vtable lookup on calling the function on its pointer? The

相关标签:
5条回答
  • 2021-02-19 13:29

    When a class inherits a virtual function, any new, overriding declaration of that function will automatically be made virtual, even if the virtual keyword is not used.

    0 讨论(0)
  • 2021-02-19 13:34

    In C++ if you declare a method virtual in the base class then it's virtual also in derived class, even if the virtual keyword is omitted.

    For documentation purposes is however in my opinion nice to repeat it anyway.

    0 讨论(0)
  • 2021-02-19 13:37

    You cannot make a function non-virtual, so it will stay virtual and a call to the function is in general also virtual. Of course, there are situations where the compiler will be able to optimize this and do a direct call, but apparantly not in your scenario.

    0 讨论(0)
  • 2021-02-19 13:39

    Virtual methods created to affect on derived class (When you mark a method as virtual. It will use vtable on derived classes). And the overrided methods will be virtual.

    0 讨论(0)
  • 2021-02-19 13:48

    The function is still virtual (assuming it has the same or a covariant signature). Using virtual when overriding is redundant.

    0 讨论(0)
提交回复
热议问题