For e.g.
int x = 3;
float * ptr = (float*)&x; // here compiler does not implicitly do conversion, but we have to manually convert to float*
so my question is, why here we don't need to manually convert it.
Base_Class * ptr = Derived_Class pointer;
is here implicit conversion occuring ?
Because
int
andfloat
are unrelated types. Accessing one as if it's the other (type punning) is Undefined Behavior.Because accessing a derived object via a pointer of type base is a fundamental mechanism by which runtime polymorphism works.