2013-10-12 206 views
3

假設有一個基類B和派生類D1,D2,D3。比較指向基類型的指針與派生類型的指針

B* b; 
D1 d1; 
D2 d2; 
D2 *pd2 = &d2; 
D3 d3; 
//more code placing valid data on variables 

這可以說b = &d1b = pd2某處代碼。 現在有沒有可能將b與指針d1,d2和d3的指針進行比較,以獲得指針的相等性而無需動態轉換?也就是說,我可以這樣做:

if (b == &d1) 
{ 
//do something 
} 

+0

'b = pd2'是不可能的,可能你的意思是'b =&pd2' –

+0

@GrijeshChauhan pd2是一個指針,萬一你錯過了它。 – Akilan

+0

哦,是的,我錯過了。 –

回答

1

現在是有可能比較B與指針d1,d2和d3的指針是否相等沒有動態轉換?

是的。

if (b == pd2)很好看,看bpd2指向同一個對象。

1

if (b == &d1)將簡單地比較指針地址,除非已創建運算符超載,根據存儲在對象內的信息進行比較。

作爲一個側面說明,根據你的代碼,你不能做b = pd2,除非你的超負荷運營商中的一個或兩個目標正確,或改用b = &pd2

+0

是的,它不是*深入的比較。 –

+0

我不想比較存儲在兩個對象中的信息。我想比較兩個指針是否指向同一個對象。只有一個指針是基類的類型。 – Akilan

+0

'b = pd2'很好。 – Adam

相關問題