- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
只是想知道,什么是最快的?如果我有这样的基类
Class Base
{
virtual void Draw()
{
//something...
}
};
然后我会有一个像这样的 Base 数组:
Base Array[255];
它可以包含 Base 及其衍生物。这将是例如存储各种绘图命令的一种方式。 (我知道这看起来像 java,但这只是为了示例。只有一个函数的类没有多大意义。)
现在或者,如果我确切地知道我会制作什么衍生品,它可以像这样完成
class Base
{
int ID;
};
然后是像以前一样的 Base 数组:基数组[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();
}
是的,对于那些到目前为止已经阅读过的人来说,真正的问题。如果你知道导数,哪个会更快?自己制作一个有组织的系统,还是使用虚拟功能?
还有其他需要考虑的事情吗? (也许是代码简洁,但我更喜欢在代码中展示我的类类型,所以我不会被转换打扰。
最佳答案
一定要使用虚函数,这正是它们的用途。自己重新实现它很容易出错,而且肯定不会更快。
此外,在声明Array
时,您需要使用指针:
Base *Array[255];
否则,在 C++ 中(与 Java 不同),数组可以仅包含Base
的实例,而不包含派生类的对象。使用指针更像是 Java 的引用,并允许您将派生类的实例放入数组中。
关于C++虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376086/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!