1. 程式人生 > >c++ 指標的強制型別轉換

c++ 指標的強制型別轉換

如果有一個指標 int *p=new int ; 這句話的意思是1、宣告一個指向int型變數的指標p,2、new動態申請一塊int 大小的記憶體,並將p指向這塊記憶體。

對p進行強制型別轉換時,我們可以通過(TYPE *)p操作進行。

(TYPE*)p強制型別轉換的結果是:指標p的型別變為TYPE*,他所指向的內容變為TYPE型別。

--------------------------------------------------------------------------------------------------------------------------------------

分享一道題目:

class A {public: void virtual fun(){cout<<" A "<<endl;}};

class B :public A{public: void virtual fun(){cout << " B "<<endl; }};

int main()

{ A *pa = new A ; pa->fun();

B * pb=(B*) pa; pb->fun();

delete pa,pb;

pa = new B; pa->fun();

pb=(B*) pa; pb->fun();

}

題目答案為:AABB,對於這套題涉及到的知識點如 delete、動態繫結、靜態繫結、強制型別轉換在之前的部落格中有介紹過。

最後提一點指標步長是如何確定的,指標的步長宣告指標的時候確定的,例如,int*p;宣告p是指向int型的指標,p++指向的是下一個int型大小的記憶體空間。而char a[20]="hello world!"; int *p=(int*)a; cout<<(p++); p++實際加了4byte。

如圖: