這種模式的目的是什麼?這叫什麼?當我第一次看到它時,看起來很奇怪,儘管我現在已經看過很多次了。派生類作爲模板參數的用途是什麼?
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
這種模式的目的是什麼?這叫什麼?當我第一次看到它時,看起來很奇怪,儘管我現在已經看過很多次了。派生類作爲模板參數的用途是什麼?
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
它被稱爲Curiously Recurring Template模式,並允許靜態多態性。
當您想要將功能添加到特定的類,但希望該實用程序在一般情況下可用時,它非常有用。通過使該實用程序依賴於並使用模板參數,您可以實現兩者。
@Thomson Tan:請注意@Gan關於靜態多態性的觀點。這是一個重要的觀點。它提供了模擬來自基類的虛擬函數調用,而沒有虛擬函數的開銷(如果這很重要) – Chubsdad 2010-10-27 07:44:06