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 }

這個是上次在某blog友回帖時有感寫的一個例子程序。

現在把目光放在RefAsParamT函數,采用非類型模板的方式使數組引用作為入參,乍看好像很爽,不需要在函數定義時指定數組的大小,比非模板方式的RefAsParam有極大的通用性。

但是,從模板生成的角度來看,對于不同的SZ就會產生不同的RefAsParamT<SZ>函數,效率上說不過去,雖說這些代碼是編譯器代替人手寫的。

再從數組引用作為入參的角度看,個人認為數組引用左入參的意義不大,特別是對于動態分配(new)的數組,這兩個函數都無效。

最后,STL中先閉后開的方式來指定數組范圍,這樣的通用性和效率都比較好。

以上,個人愚見!