5.2.7/7沿說的東西線:dynamic_cast <void*>什麼時候有用?
如果
T
是「指針cv void
」,結果是指向最派生類指向x
。
這種synatx有什麼好的應用?何時應該使用dynamic_cast<void*>
?
5.2.7/7沿說的東西線:dynamic_cast <void*>什麼時候有用?
如果
T
是「指針cv void
」,結果是指向最派生類指向x
。
這種synatx有什麼好的應用?何時應該使用dynamic_cast<void*>
?
一個常見原因是弄清楚兩個接口IA*
和IB*
實際上是指向相同底層對象的指針。如果您需要,請使用演員表。
IIRC,甚至有可能在具有重複非虛擬基的多重繼承的情況下,有兩個指針指向兩個不同的IA
子對象,這兩個指針比較不等,但指向相同的對象。
我不明白'dynamic_cast
@BasileStarynkevitch'ptr'是類類型的指針,所以它可以有RTTI。 – Oktalist 2014-09-01 19:29:58
所以'void *'是一個通用指針,所以沒有任何RTTI,恕我直言。 – 2014-09-01 19:31:02
這裏是什麼MSalters是描述如下示例:http://ideone.com/84U5ax – 2014-09-01 18:36:01
我覺得分配器可以利用這個(內存管理)。例如。如果你需要一塊內存的起始地址,但你只有一個指向基類的指針。 – dyp 2014-09-01 20:05:55
@dyp:如果你已經有一個對象,它的內存必須已經被分配,所以分配器不能再分配它。而對於釋放,你需要的不僅僅是基地址,你需要的派生類型最多,所以你可以運行所有的析構函數。 – MSalters 2014-09-01 20:15:44