分类：电脑/网络-互联网
问题：请高手看看为什么我的这段c++代码无法在vc6下编译通过呢？ 
回答：楼主同志，一楼和二楼的回答忽略吧。 三楼和四楼基本都对，编译是可以通过的，但还是各有一个错误。这个错误会导致运行时错误！ 分析如下： 1）三楼错误：T min(const T arr[n])，在函数（模板）定义时，尽管传给函数的可能是个数组，但在函数中，它实际得到的是个指针而已（传地址）。因此，在函数里，函数是不可能知道n是多少的，因此在函数里只要用到n的地方就是错的，会导致arr（函数里它只是个指针）指向数组外的地址，导致访问违规！ 2）四楼错误：template<class T, class N> T min(const T arr[], N n) 这里的n是不能随便限定类型为N的，理由是“i<n”代码的使用，如果n是个类怎么办？如果这个类是个还没定义过"<"重载操作符的话，就会出错。 作为用户，我完全可能这样使用四楼的函数为：int arr[10];string n("123"); min(arr, n); 请看这里调用函数时，是没错的，但当函数体执行到for(int i=0;i<n;i++)时，就会出错。 3)结合三楼和四楼的思想，我们可以这样定义函数： template<class T, int n> T min(const T arr[], int n){...}