Не совсем понимаю, как работает перегруженный оператор [] в следующем коде:
class safearray
{
private:
int arr[LIMIT];
public:
int& operator[](int n)
{
if (n < 0 || n >= LIMIT)
{
cout << "\nОшибочный индекс!"; exit(1);
}
return arr[n];
}
};
int main()
{
safearay sa1;
for (int j = 0; j < LIMIT; j++)
sa1[j] = j * 10;
for (j = 0; j < LIMIT; j++)
{
int temp = sa1[j];
cout << "Элемент " << j << " равен " << temp << endl;
}
return 0;
Во первых вы в main() обезопасили в цикле for выход за предела границ, так что там не будет никакой ошибки. А что касается оператора, то он выдает системе информацию для выхода из программы с помощью exit(1), если условие выполняется, а если нет, т. е. n находится в правильном диапазоне, возвращается данный элемент массива arr[n]. А вместо cout элегантнее использовать cerr для сообшения об ошибках, поскольку после такого вывода у вас других выводов не будет
class safearray // класс такой класс
{ // открывающая скобка. фигурная.
private: // атрибут доступа
int arr[LIMIT]; // массив целых знаковых размером LIMIT
public: // атрибут доступа
int& operator[](int n) // перегрузка оператора
{ // открывающая скобка. фигурная.
if (n < 0 || n >= LIMIT) // если n меньше нуля;
//или больше или равно LIMIT - вывести сообщение об ошибке и
// завершить программу (руки бы оторвать за такое)
{
cout << "\nОшибочный индекс!"; exit(1);
}
// вернуть число по индексу n
return arr[n];
}
};
int main() // ещё вопросы?
{
safearay sa1;
for (int j = 0; j < LIMIT; j++)
sa1[j] = j * 10;
for (j = 0; j < LIMIT; j++)
{
int temp = sa1[j];
cout << "Элемент " << j << " равен " << temp << endl;
}
return 0;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники