指向基类对象 的指针强制类型转换成派生类对象的指针内部做了什么

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:35:35
针对一楼的回答,如果基类指针 指向的不是派生类的对象. 该转换也是可以通过编译连接的.
这是什么道理呢,难道扩大了基类对象的范围

不会 你说的意思我认为有点想错了
举个简单例子A指针是指向有俩个数据的指针 B是指向只有一个数据的指针
你把B强制转换转给A
其实呢?你只是把“地址”给了A 但是A的类型并没改变
通过A还是可以访问2个数据 只是第二个数据是不可预料的
更简单来说 int *i;
我做了俩个操作 int a = *i; int b = *(i++);//不可预料
在简单来说 基类指针A和派生类指针B都指向同一个内存地址 有有什么呢?通过
A按照访问基类来处理内存 通过B按照派生类结构来处理内存 这没什么吗 只是说有些内存是不可预料的而已(未初始化 或者分配出去就会出现访问错误)

如果该基类指针 指向的确实是派生类的对象. 该转换是有意义的.

指针内部没有任何变化,只是扩大了指向的范围

C++编译器在这方面作的工作不少,C++教材“多态”部分都有介绍,对于应用来说除了“Virtual”函数其余部分基本不用去管。