if (index < 0 || index >= array.length) { // Don't use this index. This is out of bounds (borders, limits, whatever). } else { // Yes, you can safely use this index. The index is present in the array. Object element = array[index]; }
См. также:
Обновление: в соответствии с вашим фрагментом кода,
for(int i = 0; i<=name.length; i++) {
Индекс содержит длину массива. Это за гранью. Вы должны заменить <=
на <
.
for(int i = 0; i < name.length; i++) {
Возьмите компилятор C ++ с открытым исходным кодом и измените его.
Я думаю, что основная причина отрицательных отзывов заключается в том, что люди думают, что вы пытаетесь изменить C ++. Вместо этого скажите им, что вы создаете новый язык под названием «C-const» в качестве университетского проекта.
Лично я считаю, что это интересная идея - вы можете получить всевозможные преимущества в производительности и удобочитаемости с помощью неизменяемых типов - просто посмотрите на большинство функциональных языков.
Вы пытаетесь сообщить компилятору или другим людям, читающим или использующим ваш код? Компилятор не будет делать ничего особенного только потому, что используется определенный пользователем тип const
. На самом деле все, что он делает, - это изменяет набор методов (определенных пользователем или неявных), которые могут использоваться с этим объектом. В свою очередь, этот может позволить компилятору сделать вывод о некоторых оптимизациях представления времени выполнения.
Для типов class
/ struct
вы можете прояснить это как для компилятора, так и для пользователей, просто сделав каждый член константным:
class Point {
// An immutable Point data object
public:
Point(int ix, int iy): x(ix), y(iy) { }
Point(const Point& p): x(p.x), y(p.y) { }
Point add(const Point& p) const;
int taxiDistance() const;
// etc... all const members
const int x, y; // const can only be init'd at construction time
private:
Point& operator=(const Point& p); // never implemented!
}
Я бы не советовал этого делать. Если вам удастся достичь своей цели, любой человек (включая вас самих через некоторое время) будет удивлен, когда прочитает ваш код, а он ведет себя не так, как он ожидает.
Пожалуйста, добавьте модификатор const, видимый для всех, везде, где это необходимо. Ваш код будут читать гораздо чаще, чем писать!
Даже если вы можете это сделать (а я подозреваю, что это не так) , подумайте о других людях, читающих ваш код. Они вряд ли поймут, что все константно, и в результате вряд ли поймут ваш код.