C++运行期间不会自动检查数组是否越界。设计一个类 Words,能够检查数组否越界。
时间: 2023-05-25 09:03:45 浏览: 111
可以通过重写数组下标 [] 运算符实现检查数组是否越界的功能。
示例代码如下:
```c++
class Words{
private:
vector<string> words;
public:
Words() = default;
// 重写 [] 运算符
string& operator[](int index){
if(index < 0 || index >= words.size()){
throw out_of_range("Index out of range.");
}
return words[index];
}
// 其他成员函数
void addWord(const string& word){
words.push_back(word);
}
int size() const {
return words.size();
}
};
```
在这个类中,将 vector<string> 存储单词,重写了数组下标 [] 运算符。当访问 words 数组的下标超出了其实际范围时,会抛出 out_of_range 异常。
示例代码:
```c++
int main(){
Words words;
words.addWord("hello");
words.addWord("world");
words.addWord("how");
words.addWord("are");
words.addWord("you");
// 正常访问
cout << words[0] << endl; // 输出 hello
cout << words[1] << endl; // 输出 world
// 访问越界
try{
cout << words[10] << endl;
}catch(out_of_range& e){
cerr << "Error: " << e.what() << endl;
}
return 0;
}
```
在这个例子中,当访问 words 数组的下标为 10 时,会抛出 out_of_range 异常,从而避免了访问越界的问题。
阅读全文