C++不能自动检测数组下标是否越界,所以如果下标越界程序会直接崩溃无法执行,建立数组模板可以进行数组下标越界的检查
效果图如下 当越界时会显示插入失败的信息
程序中使用assert来进行警告处理 下标越界时就会弹出对话框警告 然后输出出现错误代码位置
源代码如下 里面还重载了[]运算符 知识点十分全面
#include<iostream> #include<iomanip> #include<cassert> using namespace std; class Date { int imonth, iday, iyear; char format[128]; public: Date(int m = 0, int d = 0, int y = 0) { imonth = m; iday = d; iyear = y; } friend ostream& operator<<(ostream& os, const Date t) { cout << "month" << t.imonth; cout << "day" << t.iday; cout << "year" << t.iyear; return os; } void display() { cout << "month" << imonth; cout << "day" << iday; cout << "year" << iyear; cout << endl; } }; template<class T,int b> class Array { T elem[b]; public: Array(){} T& operator[](int sub) { assert(sub >= 0 && sub < b); return elem[sub]; } }; void main() { Array<Date, 3>dateArray; Date dt1(1, 2, 3); Date dt2(5, 6, 8); Date dt3(9, 6, 8); dateArray[0] = dt1; dateArray[1] = dt2; dateArray[2] = dt3; for (int i = 0; i <= 2; i++) cout << dateArray[i] << endl; Date dt4(10, 11, 13); cout << dateArray[3] << endl;//超出了数组界限 弹出错误警告 但不会终止程序 }