Мне любопытно узнать, что происходит при компиляции кода с динамическим преобразованием с отключенным RTTI
(либо с -fno-rtti
на GCC, либо с помощью /GR-
на визуальной студии). Подходит ли компилятор к static_cast
? Поскольку (по крайней мере, на VS) он выдает только предупреждение, что сделает скомпилированный код?
Более конкретно, какие плохие вещи могут произойти, если я скомпилирую без RTTI код, где я уверен, что с dynamic_cast нет ошибки (т.е. где dynamic_cast
можно было бы безопасно заменить на static_cast
), как этот
class A{ /*...*/ } ;
class B : public A {
int foo() { return 42 ;}
} ;
//...
A * myA = new B() ;
int bar = (dynamic_cast<B*>(myA))->foo() ;