【发布时间】:2011-03-03 07:24:54
【问题描述】:
在C++中,无论你是否选择使用virtual,你仍然可以重写基类函数。下面的编译就好了...
class Enemy
{
public:
void SelectAnimation();
void RunAI();
void Interact()
{
cout<<"Hi I am a regular Enemy";
}
private:
int m_iHitPoints;
};
class Boss : public Enemy
{
public:
void Interact()
{
cout<<"Hi I am a evil Boss";
}
};
所以我的问题是使用或不使用虚函数有什么区别。还有什么缺点。
【问题讨论】:
-
技术上的答案是:非虚拟方法受编译时限制,虚拟方法在运行时得到解析。
-
只要您不需要额外的性能,我建议将所有方法设为虚拟。使用虚方法子类化很多简单。
-
删除了 C 标签,因为这是 C++。
标签: visual-c++