2010-10-27 37 views
6

這種模式的目的是什麼?這叫什麼?當我第一次看到它時,看起來很奇怪,儘管我現在已經看過很多次了。派生類作爲模板參數的用途是什麼?

template<typename Derived> 
struct Base { 
    //... 
}; 

struct Example : Base<Example> { 
    //... 
}; 

回答

4

我認爲你是想要CRTP。另請參閱here

+0

@Thomson Tan:請注意@Gan關於靜態多態性的觀點。這是一個重要的觀點。它提供了模擬來自基類的虛擬函數調用,而沒有虛擬函數的開銷(如果這很重要) – Chubsdad 2010-10-27 07:44:06

7

它被稱爲Curiously Recurring Template模式,並允許靜態多態性。

當您想要將功能添加到特定的類,但希望該實用程序在一般情況下可用時,它非常有用。通過使該實用程序依賴於並使用模板參數,您可以實現兩者。

相關問題