C++ - В какой строке выполнено неправильное преобразование? | ProgHub
В какой строке выполнено неправильное преобразование:
#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
Все преобразования верны