C++:重载运算符避免数组越界
2016-02-21 14:34
501 查看
C++:重载运算符避免数组越界
标签: C++ 重载运算符 数组越界by 小威威
我们知道,数组越界有时候会引发很危险的行为,然而编译器却不能检测出数组越界,那么,我们该如何预防这一危险的行为呢?
那就是重载[]运算符。
代码如下:
// // main.cpp // overload_operators[] // // Created by apple on 16/2/21. // Copyright (c) 2016年 apple. All rights reserved. // # include <iostream> # define SIZE 10 using namespace std; class array_protect { private: int array[SIZE]; public: array_protect () { for (int i = 0; i < SIZE; i++) { array[i] = i; } } int& operator [](int i) { if (i >= SIZE) { cout << "The index is out of bound" << endl; cout << "Return the first number of array" << endl; cout << "a[0] = "; return array[0]; } return array[i]; } }; int main(void) { array_protect array; cout << "array[2] = " << array[2] << endl; cout << "array[10] = " << array[10] << endl; cout << "array[13] = " << array[15] << endl; return 0; } 输出结果: array[2] = 2 array[10] = The index is out of bound Return the first number of array a[0] = 0 array[13] = The index is out of bound Return the first number of array a[0] = 0
在重构的代码中,我们可以用一个if条件语句来排除数组越界的情况,这样可以尽量减少错误的情况,很好用!!!
以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!
相关文章推荐
- C/C++程序开发中实现信息隐藏的三种类型
- C语言实现的高精度计算器
- UVa 1586, Molar Mass
- C/C++程序开发中实现信息隐藏的三种类型
- c语言入门之项目2.6——求1到m的乘积
- 关于C语言中的未初始化变量的值
- PID控制方法及C语言其实现
- 算法竞赛入门经典(第二版)-刘汝佳-第五章 C++与STL 例题(9/12)
- c语言入门之项目2.5——求1到m的倒数的和
- C++: 重载前缀运算符与重载后缀运算符(以++为例)
- 关于在xcode上写oc语言有id类型、出现ARC forbids explicit message sendof'dealloc'的问题
- Effective C++ 条款11
- C++中的指针与引用
- 斐波那契数列
- 为什么要学习和使用C语言
- C语言中的enum(枚举)使用方法
- verilog与C语言的6点重大区别
- c语言入门之项目2.4——利用while求最大公约数
- OJ 系列之重复的电话号码(C_C++)
- C语言,词法分析的“贪心法”