指针通过强制类型转换以后,指针中的值 也就是地址会发生变化吗?
这个涉及到C++对象内存模型,建议你去找一下有本老外写的书看看。
多继承时,比如D多继承了A和B,但B并没有继承自A,那么D的内存模型里,A在最前(按继承顺序A在前),B在中间,D本身定义的成员在最后,也即AB是D的一部分,对D对象取地址时,自然是得到整个对象的首地址,转成A时不会有变化,但转成B时,因为B并不继承自A也即B是不包含A的成员的,所以必然会发生地址偏移,把A的部分偏移掉,才能指向B那部分的首地址。
int a = 10;
int * p = &a;
char * q = (char *)p;
这对p指针没有任何影响
强制转换是给别人看的,不是来修改自己的。