2010-11-04 23 views
4

最近,我遇到了其他源代碼中的某些內容。我不太瞭解C++中的模板。你能幫我嗎?在C++中使用模板時的含義

struct my_grammar : public grammar<my_grammar> 
{ 
    ... 
}; 

爲什麼my_grammar可以用作類似於它的類型參數?

最好的問候,

+2

語言是C++,而不是CPP。 CPP通常表示「C預處理器」。 – kennytm 2010-11-04 06:42:29

+0

謝謝,我明白了。 – 2010-11-04 07:54:47

回答

11

這就是所謂的奇異遞歸模板模式的成語 - 看http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern。總而言之,它提供派生類作爲基類的策略,與Alexandrescu的Modern C++ Design書中使用的策略類似(強烈推薦)。這樣,基類可以使用派生類的各個方面 - 類型,常量,方法 - 全部在編譯時解析。