Я искал этот конкретный вопрос, но не смог найти его, вот он.Можно ли повышать или понижать, пропуская классы посередине?
Пример кода -
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;
}
Это допустимый код?И объяснения того, как компилятор управляет адресами, и такого рода приведение было бы очень полезно.