1. 程式人生 > >模板拾遺二_traits和policy

模板拾遺二_traits和policy

its img fix 參數化 技術分享 += 允許 templates ont

1,traits

技術分享


技術分享

char name[] = "templates";

int legnth = sizeof(name) - 1;

accum(&name[0], &name[legnth]);


2,value trait
技術分享


技術分享
value trait有個缺點:在所在類的內部,C++只允許對整形和枚舉類型初始化成靜態成員變量。
顯然folat或其它自定義類型等不能使用上面解決方案。


3,使用靜態成員函數來做為value trait
技術分享
技術分享


4,
trait提供了一種配置具體元素(通常是類型)的途徑,而該途徑通常是泛型計算。

前面三種被稱為fixed trait,一點定義了這個分離的trait就不能子啊算法中對其進行改寫。

從原則上講參數化trait的主要目的在於:添加一個具有缺省值的模板參數,而且該缺省值由前面介紹的fixed trait決定。
有這種缺省值用戶就不用提供這個額外的模板實參,但是也可以改寫這個預設類型。
目前一些編譯器對函數模板預設缺省模板實參還不支持,因此將其實現為一個類。
技術分享




5,policy
上面traitstotal += *beg;除求和外還有求積、字符串連接等累積操作。
於是,我們把一個累積操作稱為一個policy
因此一個policy類就是一個提供了一個接口的類。
技術分享

技術分享

模板拾遺二_traits和policy