C 中的類型擦除是指隱藏某個類別的部分或全部類型資訊的技術,類似於Boost. Any。以下是各種類型擦除方法:
虛擬函數是一種經典技術,您可以在基於介面的類別層次結構中抽象類別的實作。許多 Boost 函式庫(例如 Boost.Any 和 Boost.Shared_ptr)都採用這種方法來隱藏型別或釋放機制。
另一個選擇涉及使用函數指標使用模板化函數,同時將實際物件儲存在 void* 指標中。 Boost.Function 利用這種技巧來隱藏函子的真實類型。
例如,GMan 的方法利用模板來隱藏實際類型不訴諸虛擬函數或 void*操作。
shared_ptr
C 中的所有類型擦除技術都採用函數指針和 void* 指針,主要區別在於語義糖的提供。
以上是C 如何實作類型擦除:技術比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!