我已经搜索了这个特定问题,但找不到它,所以在这里。通过跳过中间的类来进行向上转换或向下转换是否可以?
示例代码-
class Base { }
class Derived : public Base { }
class DerivedOfDerived : public Derived { }
class DerivedOfDOD : public DerivedOfDerived { }
int main()
{
DerivedOfDOD *dodod = new DerivedOfDOD();
Base *b = static_cast<Base *>(dodod);
Derived *d = static_cast<Derived *>(b);
back_to_b = static_cast<Base *>(d);
DerivedOfDerived *dod = static_cast<DerivedOfDerived *>(back_to_b);
delete dodod;
}
这是有效的代码吗?并对编译器如何管理地址以及这种类型的转换的解释将非常感激。
答案 0 :(得分:1)
跳过中间的类可以进行向上转换还是向下转换?
是的
这是有效的代码吗?
是的。 (如果我们忽略内存泄漏)
P.S。上载是隐式的,因此Base *b = dodod;
就足够了。