看板 C_and_CPP 關於我們 聯絡資訊
我需要各位高手給我一個觀念上的指點@@ 以下是我隨興亂測試的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)