询问:在需要返回“数组”引用时如何确保越界错误被及时发出
在需要返回“数组”引用时,哪种返回方式更好呢?或有没有更好的返回方式呢?
引用 越界 返回值
#include <iostream>
#include <vector>
#include "assert.h"
using namespace std;
class Arr
{
vector<int> li;
public:
Arr() {};
~Arr() {};
void add(int v)
{
li.push_back(v);
};
const int& get(int idx)
{
if(!(li.size() > (unsigned int)idx))
{
// 此处会CRASH!!!
{
// 方案1
return *(li.end());
}
//{
//// 方案2
//assert(0);
//}
}
return li[idx];
};
};
int main(int argc, char* argv[])
{
Arr arr;
for(int i = 0; 10 > i; ++i)
{
arr.add(i);
}
// 非法操作:取越界的数据。
int temp = arr.get(10);
cout<<temp<<endl;
getchar();
return 0;
}