Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Перегрузка операции индексирования



Операция индексирования [] обычно перегружается, когда тип класса представляет множество значений, для которого индексирование имеет смысл. Операция индексирования должна возвращать ссылку на элемент, содержащийся в множестве. Покажем это на примере класса Vect, предназначенного для хранения и работы с массивом целых чисел:

#include <iostream.h> #include <stdlib.h> class Vect{ int* p; int size; public: Vect(int n = 10); Vect(const int a[], int n); //инициализация массивом ~Vect() { delete [] p; } int operator [] (int i); void Print(); ... }; Vect::Vect(int n){ size=n; p = new int[n]; } Vect::Vect(const int a[], int n){ size=n; p = new int[n]; for (int i = 0; i < size; i++) p[i] = a[i]; } // Перегрузка операции индексирования: int Vect::operator [] (int i){ if(i < 0 || i >= size){ cout << "Неверный индекс (i = " << i << ")" << endl; cout << "Завершение программы" << endl; exit(0); } return p[i]; } void Vect::Print(){ for (int i = 0; i < size; i++) cout << p[i] << " "; cout << endl; } int main(){ int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Vect a(arr, 10); a.Print(); cout << a[5] << endl; return 0; }  

Перегруженная операция индексирования получает целый аргумент и проверяет, лежит ли его значение в пределах диапазона массива. Если да, то возвращается адрес элемента, что соответствует семантике стандартной операции индексирования.


Лекция 5. Статические элементы класса. Дружественные функции и классы





Дата публикования: 2014-11-28; Прочитано: 291 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...