在C,如果我有兩個類型的指針:當需要顯式指針類型轉換?
INT以下,是沒有必要把一個明確的轉換(typeA *)
1 p= q is fine, no need to use p = (typeA *)q;
2 define: void func(typeA *p){}
call: func(q); is fine, no need to use func((typeA *)q)
3 p=malloc(sizeof(typeA)); is fine, no need to use p=(typeA *)malloc(sizeof(typeA))
之外,是C++相同或不?
謝謝!
C++的繼承使一些事情可以允許,可能不在c。但是要注意的一點是,c和C++之間的差異是這個......對於變量'typeA * a; typeB * b; void * v''a = b'的結果可能不同於'v = b; a = v'。這發生在C++中的多繼承。基本上'void *'消除了C++正確跟蹤繼承的能力。 –
你可以看看這個[GOTW關於強制轉換](http://www.gotw.ca/gotw/017.htm) – loic
[我投了malloc的結果嗎?](http://stackoverflow.com/questions/ 605845/do-i-cast-result-of-malloc/605858#605858) –