#includeusing namespace std;/*模板的作用: 1. 不用声明类型, 传什么进来就是什么类型, 返回也是什么类型 2. 方法封装起来, 可以当公共类使用, 方便*/template void mark2dArray(T ** &x, int numberofRows, int numberofColumns){ x = new T * [numberofRows]; for (int i = 0; i < numberofRows; i++) { x[i] = new T [numberofColumns]; }}// template 只针对下面函数、对象有效, 所以这里要在声明一次 template void delete2dArray(T ** &x, int numberofRows){ for (int i = 0; i < numberofRows; i++) { delete [] x[i]; } delete [] x; x = NULL;}int main(int argc, char const *argv []){ int rowsNum = 5; int columnsNum = 5; int ** a; mark2dArray(a, rowsNum, columnsNum); a[2][3] = 323; printf("%d\n", a[2][3]); delete2dArray(a, rowsNum); return 0;}