我知道为什么以及虚拟方法如何工作,大多数时候人们告诉我,我应该总是将方法标记为虚拟,但是,我不明白为什么如果我不打算覆盖它.而且我也知道存在微小的内存问题.
请解释一下为什么我应该将所有方法标记为虚拟和什么是权衡.
代码示例:
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:如果有任何语法错误,我很抱歉,英语不是我的母语.
不,你不应该"将所有方法标记为虚拟".
如果您希望该方法是虚拟的,则将其标记为.如果没有,请保留关键字.
与常规方法相比,虚拟方法存在开销.如果您想了解更多相关信息,请查看维基百科有关VTables的信息.