作者QQ29 (我爱阿蓉)
看板C_and_CPP
标题[问题] 转型观念求教!
时间Tue Oct 27 03:28:30 2009
我需要各位高手给我一个观念上的指点@@
以下是我随兴乱测试的code
class A{
public :
A(){X[0]=2;}char S[4];int X[10];
};
class B{
public :
B(){Y[0]=1;}int S;int Y[10];
};
int main()
{
A p;
B *bb = (B*)&p;
//B obj=(B)p; <======1.这行不给过 c-style转型不是无敌硬转嘛?
B obj=reinterpret_cast<B &>(p);//改为这样
//2.以下这三个cout为啥 前两个会一样第三个不同...
cout<<&(bb->Y[0])<<endl;
cout<<&p.X[0]<<endl;
cout<<&obj.Y[0]<<endl;
return 0;
}
如果2.的问题是说 bb指向p 所以起始位址一样 所以我这样印结果一样
obj自己有自己的位址 所以加个offset所以位址和上面不一样????
3. 如果把三个cout的&拿掉 印值
全都印出2.............
可否请了解运作原理的人 说明一下为什麽嘛...
我可能可以自己体会为什麽 不过总觉得不要乱认知比较好 最後学的是错的就不好了...
所以泼出来请教各位
以上1 2 3点问题 请各位解答 谢谢!~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.207.187
※ 编辑: QQ29 来自: 140.113.207.187 (10/27 03:34)