ProgHubPH

В какой строке выполнено неправильное преобразование:

#include <stdio.h> 
  
class A 
{ 
    virtual void print() = 0; 
}; 
  
class B: public A 
{ 
    void print() 
    { 
        printf("B"); 
    } 
}; 
  
class C: public A 
{ 
    void print() 
    { 
        printf("C"); 
    } 
}; 
  
int main() 
{ 
    A *a1 = new B();  //1 
    A *a2 = new C();  //2 
  
    B *b1 = dynamic_cast<B *>(a1);  //3 
    B *b2 = dynamic_cast<B *>(a2);  //4 
  
    return 0; 
}
1
2
3
4
Все преобразования верны