例如
int x = 3;
float * ptr = (float*)&x; // here compiler does not implicitly do conversion, but we have to manually convert to float*
所以我的问题是,为什么这里我们不需要手动转换它。
Base_Class * ptr = Derived_Class pointer;
这里是否发生隐式转换?
例如
int x = 3;
float * ptr = (float*)&x; // here compiler does not implicitly do conversion, but we have to manually convert to float*
所以我的问题是,为什么这里我们不需要手动转换它。
Base_Class * ptr = Derived_Class pointer;
这里是否发生隐式转换?
这里编译器不会隐式进行转换
因为int
和float
是不相关的类型。像访问另一个一样访问一个(类型双关语)是未定义的行为。
为什么这里会发生隐式转换
因为通过 base 类型的指针访问派生对象是运行时多态性工作的基本机制。