1 #include <iostream>
 2 using namespace std;
 3 
 4 void RefAsParam(int (&aRR)[5])
 5 {
 6     cout << aRR[3<< endl;
 7 }
 8 
 9 template < size_t SZ >
10 void RefAsParamT(int (&aRR)[SZ])
11 {
12     cout << aRR[0<< endl;
13 }
14 
15 void main()
16 {
17     int a[5= { 12345};
18 
19     RefAsParam( a );
20 
21     RefAsParamT( a );
22 
23     getchar();
24 }

這個(gè)是上次在某blog友回帖時(shí)有感寫(xiě)的一個(gè)例子程序。

現(xiàn)在把目光放在RefAsParamT函數(shù),采用非類(lèi)型模板的方式使數(shù)組引用作為入?yún)ⅲЭ春孟窈芩恍枰诤瘮?shù)定義時(shí)指定數(shù)組的大小,比非模板方式的RefAsParam有極大的通用性。

但是,從模板生成的角度來(lái)看,對(duì)于不同的SZ就會(huì)產(chǎn)生不同的RefAsParamT<SZ>函數(shù),效率上說(shuō)不過(guò)去,雖說(shuō)這些代碼是編譯器代替人手寫(xiě)的。

再?gòu)臄?shù)組引用作為入?yún)⒌慕嵌瓤矗瑐€(gè)人認(rèn)為數(shù)組引用左入?yún)⒌囊饬x不大,特別是對(duì)于動(dòng)態(tài)分配(new)的數(shù)組,這兩個(gè)函數(shù)都無(wú)效。

最后,STL中先閉后開(kāi)的方式來(lái)指定數(shù)組范圍,這樣的通用性和效率都比較好。

以上,個(gè)人愚見(jiàn)!