0
这是一个纯粹好奇的问题,我不认为答案可能会导致很大的改进。铸造一个对象两次vs一次表演
让我们假设有这种树的继承:
A
/\
/ \
AB AC
/\ /\
ABB ABC ACB ACC
我要编写一个执行型动物的行为基础上的对象类型的函数。 我100%确定这个对象只能是一个AC对象或它的一个子对象。
现在它的代码是更快:
int t = getObjectType();
A* obj = getObject();
switch (t) {
case 0:
ACB* casted_obj = static_cast<ACB*>(obj);
case 1:
ACC* casted_obj = static_cast<ACC*>(obj);
}
或
int t = getObjectType();
A* sup = getObject();
AC* obj = static_cast<AC*>(sup);
switch (t) {
case 0:
ACB* casted_obj = static_cast<ACB*>(obj);
case 1:
ACC* casted_obj = static_cast<ACC*>(obj);
}
或许C++标准不说如何继承树必须管理什么,所以答案取决于实现。
这两个代码都是*错误*:你忘了'break'。 – kennytm 2012-07-26 13:41:22
此外,[你不能在开关中声明变量](http://stackoverflow.com/q/92396/912144),但我们得到的主旨。 – Shahbaz 2012-07-26 13:44:29