Рубрики

Перегрузка Subscript или оператора индекса массива [] в C ++

Мы ввели перегрузку операторов . В этом посте обсуждается перегрузка оператора index [].
Ниже приведены некоторые полезные факты о перегрузке [].
1) Перегрузка [] может быть полезна, когда мы хотим проверить индекс вне пределов.
2) Мы должны вернуться по ссылке в функции, потому что выражение типа «arr [i]» может быть использовано как lvalue.

Ниже приведена программа на C ++ для демонстрации перегрузки оператора индекса массива [].

// Перегрузка операторов для класса Array
#include<iostream>
#include<cstdlib>

  

using namespace std;

  
// Класс для представления целочисленного массива

class Array

{

private:

    int *ptr;

    int size;

public:

    Array(int *, int);

  

    // Перегрузка оператора [] для доступа к элементам в стиле массива

    int &operator[] (int);

  

    // Утилита для печати содержимого

    void print() const;

};

  

  
// Реализация оператора []. Эта функция должна возвращать
// ссылка как элемент массива может быть размещена на левой стороне

int &Array::operator[](int index)

{

    if (index >= size)

    {

        cout << "Array index out of bound, exiting";

        exit(0);

    }

    return ptr[index];

}

  
// конструктор для класса массива

Array::Array(int *p = NULL, int s = 0)

{

    size = s;

    ptr = NULL;

    if (s != 0)

    {

        ptr = new int[s];

        for (int i = 0; i < s; i++)

            ptr[i] = p[i];

    }

}

  

void Array::print() const

{

    for(int i = 0; i < size; i++)

        cout<<ptr[i]<<" ";

    cout<<endl;

}

  
// Программа драйвера для тестирования вышеуказанных методов

int main()

{

    int a[] = {1, 2, 4, 5};

    Array arr1(a, 4);

    arr1[2] = 6;

    arr1.print();

    arr1[8] = 6;

    return 0;

}

Выход:

1 2 6 5
Array index out of bound, exiting

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Перегрузка Subscript или оператора индекса массива [] в C ++

0.00 (0%) 0 votes