前一篇文章,吾提出重载下标操作符[],实现内存越界检查.于是网上搜索了一下,找到一个范例,测试通过:
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; class SafeArray { public: SafeArray(const int size) { nSize = size; pData = (int*)malloc(sizeof(int)*nSize); //memset(pData, 0, sizeof(int)*nSize); for (int i=0; i<nSize; i++) { pData[i] = i; } } ~SafeArray() { if (pData != NULL) { free(pData); pData = NULL; } } int& operator[](int i) { if( i > nSize ) { cout << "索引超过最大值" <<endl; // 返回第一个元素 return pData[0]; } return pData[i]; } private: int* pData; int nSize; }; int main() { SafeArray test(8); cout << "test[2] 的值为 : " << test[2] <<endl; cout << "test[5] 的值为 : " << test[5] <<endl; cout << "test[p] 的值为 : " << test[9] <<endl; return 0; }