1. 程式人生 > >深度探索C++物件模型筆記《指標的型別》

深度探索C++物件模型筆記《指標的型別》

一個指標,不管它指向哪一種資料型別,指標本身所需的記憶體大小是固定的,即4個位元組。

class Z{
   //......
};
class X: public Z{
  //......
};

那麼X* Px; Z *Pz; int* Pi;又有何不同呢?
以記憶體需求的觀點來說,沒有什麼不同!它們三個都需要有足夠的記憶體來放置一個機器地址(通常是個word,譯註)。“指向不同型別之各指標”間的差異,既不在其指標表示法不同,也不在其內容(代表一個地址)不同,而是在其所定址出來的object型別不同.也就是說,“指標型別”會教導編譯器如何解釋某個特定地址中的記憶體內容及其大小

:

   那麼,一個指向地址1000而型別為void*的指標,空間呢?是的,我們不知道!這就是為什麼一個型別為void*的指標只能含有一個地址,而不能夠通過它操作所指之object的緣故.所以,轉型(cast )其實是一種編譯器指令。大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式。