Dynamic Cast, работающее с несвязанными типами

#include <iostream> 
using namespace std; 
class X{ 
     public: 
     virtual void f(){} 
}; 

class Y { 
     public: 
     virtual void g() {} 
}; 

int main() 
{ 
     X * x = new X(); 
     Y* y = dynamic_cast<Y*>(x); //A 
     // Y* y = static_cast<Y*>(x);  //B 
     cout << y << endl; 
} 

A компилируется, а B - нет. Я понимаю, почему B не t компилируется, но почему компилируется A , хотя X и Y совершенно не связанные типы?

9
задан M.C 11 October 2010 в 15:06
поделиться