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] = { 1, 2, 3, 4, 5};
18 
19     RefAsParam( a );
20 
21     RefAsParamT( a );
22 
23     getchar();
24 }
这个是上次在某blog友回帖时有感写的一个例子程序。
现在把目光放在
RefAsParamT函数,采用非类型模板的方式使数组引用作为入参,乍看好像很爽,不需要在函数定义时指定数组的大小,比非模板方式的
RefAsParam有极大的通用性。
但是,从模板生成的角度来看,对于不同的SZ就会产生不同的
RefAsParamT<SZ>函数,效率上说不过去,虽说这些代码是编译器代替人手写的。
再从数组引用作为入参的角度看,个人认为数组引用左入参的意义不大,特别是对于动态分配(new)的数组,这两个函数都无效。
最后,STL中先闭后开的方式来指定数组范围,这样的通用性和效率都比较好。
以上,个人愚见!