我在想,什么方法最快?如果我有一个像这样的基类:
Class Base
{
virtual void Draw()
{
//something...
}
};
那么我会有一个像这样的基本数组:
Base Array[255];
这里可能包含Base及其派生类。例如,存储各种绘图命令的一种方式。(我知道这似乎与Java相似,但这只是一个例子。只有一个函数的类并没有太多意义。)
或者,如果我确切地知道要创建哪些派生类,可以像这样完成:
class Base
{
int ID;
};
然后像之前一样创建一个Base数组:
Base Array[255];接着在派生类中创建绘制函数:
class Der1 : Base
{
void Draw()
{
}
};
class Der2 : Base
{
void Draw()
{
}
};
现在,这种解决方案当然不能让我只是循环遍历数组并为每个对象调用Draw。而是必须像这样完成。
void CallDraw()
{
for (int i = 0; i < 255; i++)
{
switch(Array[i].ID)
{
case 1: //Der1
( (Der1) Array[i] ) . Draw();
case 2: //Der2
( (Der2) Array[i] ) . Draw();
}
如果你知道导数,哪种方法更快呢?自己制作一个有组织的系统,还是使用虚拟函数?
还有其他需要考虑的因素吗?(比如代码清晰度,但我更喜欢在代码中展示我的类类型,所以我不介意强制转换。)