2011-01-18 22 views
5

此模式用於什麼?注意它不同於C++「奇怪的循環模板模式」。C類中的X類:X <T> {}模式---它用於什麼?

+3

你的意思是`class X:T `?如果是這樣,這*是奇怪的循環模板模式。請注意,如果你的標題是正確的,`X`和`X `實際上是兩種不同的類型;我們需要看到這樣一個使用的例子。 – cdhowie 2011-01-18 23:02:47

+0

是的,它是X:X 而不是CRTP模式。 – user580650 2011-01-20 23:16:24

回答

4

讓泛型祖先類知道從其繼承的實際後代有助於在泛型祖先需要將特定非泛型後代類作爲非泛型後代的結果自己的合約的一部分公開的場景中。

一個常見的例子是在通用祖先聲明一個工廠方法:

public class Parent<T> 
    where T : Parent<T>, new 
{ 
    public static T Create() 
    { 
     return new T(); // would be typically something more sophisticated 
    } 
} 

public class Child : Parent<Child> 
{ 
} 

這一概念的主要優點是代碼的重複數據刪除。

相關問題