为什么我要用C++标记所有虚拟方法?有没有权衡?

1 c++ virtual-functions

我知道为什么以及虚拟方法如何工作,大多数时候人们告诉我,我应该总是将方法标记为虚拟,但是,我不明白为什么如果我不打算覆盖它.而且我也知道存在微小的内存问题.

请解释一下为什么我应该将所有方法标记为虚拟和什么是权衡.

代码示例:

class Point
{
   int x, y;
   public:
      virtual void setX(int i);
      virtual void setY(int i);
};
Run Code Online (Sandbox Code Playgroud)

(这个问题不等于我应该将所有方法标记为虚拟吗?因为我想知道权衡,因为案例中的编程语言是C++,而不是C#)

OBS:如果有任何语法错误,我很抱歉,英语不是我的母语.

fol*_*kol 5

不,你不应该"将所有方法标记为虚拟".

如果您希望该方法是虚拟的,则将其标记为.如果没有,请保留关键字.

与常规方法相比,虚拟方法存在开销.如果您想了解更多相关信息,请查看维基百科有关VTables的信息.