2070 / C++ / Класи / Перевантаження операторів / Перевантаження оператору підрядкового індексу [] / Vector з цілими числами

 

#include <iostream>
using namespace std;

class IntVector {
  public:
    IntVector(int cElements);
    ~IntVector() { delete[] _iElements; }
    int& operator[](int nSubscript);

  private:
    int*_iElements;
    int _iUpperBound;
};

IntVector::IntVector(int cElements) {
  _iElements = new int[cElements];
  _iUpperBound = cElements;
}

int& IntVector::operator[](int nSubscript) {
  static int iErr = -1;
  if (nSubscript >= 0 && nSubscript < _iUpperBound)
    return _iElements[nSubscript];
  else {
    clog << "Vyhid za mexhi masyvu" << endl;
    // Вивід одразу, без використання буферу
    return iErr;
  }
}

int main() {
  IntVector v(10);
  int i;

  for (i = 0; i < 10; i++)
    v[i] = i;
    v[3] = v[9];

  for (i = 0; i < 11; i++)
    cout << "Element: [" << i << "] = " << v[i] << endl;

  system("pause");
  return 0;
}

Element: [0] = 0
Element: [1] = 1
Element: [2] = 2
Element: [3] = 9
Element: [4] = 4
Element: [5] = 5
Element: [6] = 6
Element: [7] = 7
Element: [8] = 8
Element: [9] = 9
Vyhid za mexhi masyvu
Element: [10] = -1