我已经搜索过这个特定的问题,但找不到它,所以就在这里。跳过中间的类来向上或向下转换好吗?
示例代码-
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;
}
这是有效的代码吗?以及对编译器如何管理地址和这种转换的解释将不胜感激。
最佳答案
Is it fine to upcast or downcast by skipping the classes in the middle?
是的。
Is this valid code?
是的。 (如果我们忽略内存泄漏的话)
附言向上转换是隐式的,因此 Base *b = dodod;
就足够了。
关于c++ - 在 C++ 中向上转型和向下转型跳过层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423130/