Не совсем понимаю, как работает перегруженный оператор []
в следующем коде:
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;
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Linux x86 компилятор g++Не получается создать массив с кол-вом int элементов, пробовал даже int заменять на double все ровно пишет size of array is too large, как...
Я хочу вывести График, после нажатой кнопкиНо у меня окошко появляется и сразу исчезает