c++里面指针的强制转换肯定没有问题的,就是如何看待一个地址存储类型的问题,至于强制转换后的后果是不可知的。就像你可以把一个int*强制转换为float*一样,转换的过程不可能出问题
#include <iostream>
using namespace std;
class A
{
public:
int i;
A(int a):i(a){}
};
class B:public A
{
public:
int j;
B(int a,int b):A(a),j(b){}
};
int main()
{
for(int i=0; i<100; ++i){
A* a = new A(1);
B* b = (B*)a;
cout<<b->j<<endl;}//a、b指向同一块区域,可以打印&(*a),但是sizeof(*a)=4,sizeof(*b)=8,内存要靠自己去维护
system("pause");
return 0;
}